fix setting fields

This commit is contained in:
2026-06-02 16:31:45 +10:00
parent cd8799b775
commit 9f3a2498de
3 changed files with 8 additions and 8 deletions

View File

@@ -13,7 +13,6 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "parser.h"
// -- HELPER METHODS -- //
@@ -496,6 +495,10 @@ ResultType(CometOperand, charptr) visitFieldReassignStatement(CometCompiler* c,
return Success(CometOperand, charptr, NO_OPERAND);
}
ResultType(CometOperand, charptr) visitReassignStatement(CometCompiler* c, CometASTNode* node) {
if (node->data.AST_ASSIGN_STATEMENT.ident->nodeType == AST_INFIX_EXPRESSION) { // struct reassign
return visitFieldReassignStatement(c, node->data.AST_REASSIGN_STATEMENT.ident);
}
ResultType(CometType, charptr) varType = resolveType(c, node->data.AST_REASSIGN_STATEMENT.ident);
if (varType.error)
return Error(CometOperand, charptr, varType.as.error);
@@ -537,10 +540,6 @@ ResultType(CometOperand, charptr) visitReassignStatement(CometCompiler* c, Comet
if (exprResult.error)
return exprResult;
if (node->data.AST_ASSIGN_STATEMENT.ident->nodeType == AST_INFIX_EXPRESSION) { // struct reassign
return visitFieldReassignStatement(c, node->data.AST_REASSIGN_STATEMENT.ident);
}
switch (node->data.AST_REASSIGN_STATEMENT.op.type) {

View File

@@ -50,8 +50,8 @@ int main(int argc, char** argv) {
return 1;
}
/*printNode(ast.as.success);
printf("\n");*/
printNode(ast.as.success);
printf("\n");
ResultType(cometCompilerPtr, charptr) compiler = newCompiler();

View File

@@ -166,7 +166,8 @@ bool currentTokenIsAssignment(CometParser* parser) {
CT_TIMES_EQ,
CT_DIVIDE_EQ,
CT_MOD_EQ,
CT_POW_EQ
CT_POW_EQ,
CT_EQ
};
for (size_t i = 0; i < sizeof(assignmentOperators)/sizeof(assignmentOperators[0]); i++) {