fix setting fields
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
Reference in New Issue
Block a user