diff --git a/Environment.py b/Environment.py index 4c542c393e860ce8eb341d3f8c7bb02d99399507..f324021d7c1d8f03bb348824dcb11e2e71a460c4 100644 --- a/Environment.py +++ b/Environment.py @@ -147,7 +147,10 @@ class GlobalEnv(Env): p = pName.split(".") for k in self.packageMap.keys(): #check if package Name is a prefix kk = k.split(".") + if len(kk) < len(p): + continue found = True + for i in range(len(p)): if kk[i] != p[i]: found = False diff --git a/TypeNodes.py b/TypeNodes.py index 43652774e74011b3a9197eeb9a1082aaa42cff15..dd70d57a76e30d53674b09f673baa24dd3310239 100644 --- a/TypeNodes.py +++ b/TypeNodes.py @@ -48,8 +48,7 @@ class ClassInterNode(ASTNode): if self.canonName in hierarchy: raise Exception("ERROR: The hierarchy is not acyclic '{}', saw '{}'".format(hierarchy, self.canonName)) - # get contains - contains = self.methods + contains = [] for inter in self.superInter: superContains = inter.getContains(hierarchy + [self.canonName]) @@ -222,6 +221,8 @@ class ClassNode(ClassInterNode): if not conOverwritten: addToContains.append(con) contains += addToContains + + contains.extend(self.methods) return contains def getConstructor(self, argTypes): @@ -259,7 +260,7 @@ class InterNode(ClassInterNode): self.methods.append(MethodNode(n)) self.canonName = self.packageName + '.' + self.name - self.children = self.methods + self.children.extend(self.methods) def buildEnv(self, parentEnv): env = Env(parentEnv) @@ -318,5 +319,5 @@ class InterNode(ClassInterNode): if not conOverwritten: addToContains.append(con) # contains += addToContains # this is causing very VERY WEIRD ERRORS I AM VERY FRUSTRATED, DO NOT UNCOMMENT THIS IF YOU WISH TO HAVE A GOOD TIME, UNCOMMENT AT YOUR PERIL - + contains.extend(self.methods) return contains