From b5db74dc077bc88bb92e380a4e31c14446f04a7b Mon Sep 17 00:00:00 2001 From: pycsham <shampuiyanchloe@gmail.com> Date: Fri, 6 Mar 2020 16:25:03 -0500 Subject: [PATCH] Implemented type checking on assignNodes. fails a bunch of tests due to arrayAccess --- ExprPrimaryNodes.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ExprPrimaryNodes.py b/ExprPrimaryNodes.py index ad49d89..1369ffd 100644 --- a/ExprPrimaryNodes.py +++ b/ExprPrimaryNodes.py @@ -126,7 +126,7 @@ class ArrayAccessNode(ASTNode): if (parseTree.children[0].name == 'primaryNoArrayAccess'): self.array = makeNodeFromAllPrimary(parseTree.children[0], typeName) else: - self.array = NameNode(parseTree.children[0].children[0], False, typeName) + self.array = NameNode(parseTree.children[0], False, typeName) self.index = makeNodeFromExpr(parseTree.children[2], typeName) self.children.append(self.array) @@ -210,6 +210,19 @@ class AssignNode(ASTNode): self.right.disambigName() # helperDisambigName(self.right) # helperDisambigName(self.left) + + def checkType(self): + self.left.checkType() + self.right.checkType() + + if self.left.myType.assignable(self.right.myType): + self.myType = self.left.myType + return + print(self.left.myType.isArray) + print(self.right.myType.isArray) + print(self.left.name) + print(self.right) + raise Exception("ERROR: assignment operation failed. Cannot assign type {0} to type {1} at class {2}".format(self.left.myType.name, self.right.myType.name, self.typeName)) ################################################################################## -- GitLab