diff --git a/LineNodes.py b/LineNodes.py index 15ac4571020a9e0cd425a3aa2a75edead6e640f4..52f1a024fec1f19358a2107d00b7771d5f027670 100644 --- a/LineNodes.py +++ b/LineNodes.py @@ -108,6 +108,7 @@ class VarDclNode(ASTNode): # Handling rule: variableInit expr self.variableInit = makeNodeFromExpr(parseTree.children[3].children[0], typeName) + self.myType = self.dclType.myType self.children.append(self.dclType) self.children.append(self.variableInit) @@ -122,7 +123,6 @@ class VarDclNode(ASTNode): return self.env def checkType(self): - self.myType = self.dclType.myType if self.variableInit: self.variableInit.checkType() if not self.myType.assignable(self.variableInit.myType): diff --git a/MemberNodes.py b/MemberNodes.py index 6e27b092eaa835e7493c048534b95cfa4f2c1dd1..13ba951fffeac30d5656d1e6acce2163fa380ada 100644 --- a/MemberNodes.py +++ b/MemberNodes.py @@ -28,6 +28,7 @@ class FieldNode(ASTNode): self.variableDcl = VarDclNode(node, self.typeName) self.name = self.variableDcl.name + self.myType = self.variableDcl.myType self.children.append(self.variableDcl) @@ -36,7 +37,6 @@ class FieldNode(ASTNode): def checkType(self): self.variableDcl.checkType() - self.myType = self.variableDcl.myType ########################################################### diff --git a/TypeNodes.py b/TypeNodes.py index 458dea7969349ecfb2da88e0be56b271842107ab..1f793e69bcb6cb2925b6ba7085c18db51a4fcac9 100644 --- a/TypeNodes.py +++ b/TypeNodes.py @@ -143,7 +143,6 @@ class ClassInterNode(ASTNode): print(i.name) def checkType(self): - self.myType = TypeStruct(self.canonName, self) for c in self.children: if c and hasattr(c, 'checkType'): c.checkType() @@ -153,14 +152,6 @@ class ClassNode(ClassInterNode): # always list all fields in the init method to show the class structure def __init__(self, parseTree, packageName): super().__init__(parseTree, packageName) - # self.parseTree = parseTree - # self.packageName = packageName - # self.name = '' - # self.methods = [] - # self.superInter = [] - # self.env = None - # self.children = [] - # self.canonName = self.packageName + '.' + self.name self.fields = [] self.constructors = [] self.mods = [] @@ -196,6 +187,7 @@ class ClassNode(ClassInterNode): order += 1 self.canonName = self.packageName + '.' + self.name + self.myType = TypeStruct(self.canonName, self) self.children += self.fields + self.methods + self.constructors def buildEnv(self, parentEnv): @@ -266,14 +258,6 @@ class InterNode(ClassInterNode): # always list all fields in the init method to show the class structure def __init__(self, parseTree, packageName): super().__init__(parseTree, packageName) - # self.parseTree = parseTree - # self.packageName = packageName - # self.name = '' - # self.methods = [] - # self.superInter = [] - # self.env = None - # self.children = [] - # self.canonName = self.packageName + '.' + self.name for node in parseTree.children: if node.name == 'ID': @@ -290,6 +274,7 @@ class InterNode(ClassInterNode): self.methods.append(MethodNode(n, self.name, 0)) # order = 0 since no method body in interface needs to be checked self.canonName = self.packageName + '.' + self.name + self.myType = TypeStruct(self.canonName, self) self.children.extend(self.methods) def buildEnv(self, parentEnv):