Skip to content
Snippets Groups Projects
Commit b5db74dc authored by pycsham's avatar pycsham
Browse files

Implemented type checking on assignNodes. fails a bunch of tests due to arrayAccess

parent 45f1a26d
No related branches found
No related tags found
No related merge requests found
...@@ -126,7 +126,7 @@ class ArrayAccessNode(ASTNode): ...@@ -126,7 +126,7 @@ class ArrayAccessNode(ASTNode):
if (parseTree.children[0].name == 'primaryNoArrayAccess'): if (parseTree.children[0].name == 'primaryNoArrayAccess'):
self.array = makeNodeFromAllPrimary(parseTree.children[0], typeName) self.array = makeNodeFromAllPrimary(parseTree.children[0], typeName)
else: 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.index = makeNodeFromExpr(parseTree.children[2], typeName)
self.children.append(self.array) self.children.append(self.array)
...@@ -210,6 +210,19 @@ class AssignNode(ASTNode): ...@@ -210,6 +210,19 @@ class AssignNode(ASTNode):
self.right.disambigName() self.right.disambigName()
# helperDisambigName(self.right) # helperDisambigName(self.right)
# helperDisambigName(self.left) # 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))
################################################################################## ##################################################################################
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment