From 84cccef366d881587fb334dcc7651226c6d8960f Mon Sep 17 00:00:00 2001 From: Xun Yang <x299yang@uwaterloo.ca> Date: Tue, 3 Mar 2020 12:38:27 -0500 Subject: [PATCH] fix appending contains to method --- Environment.py | 3 +++ TypeNodes.py | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Environment.py b/Environment.py index 4c542c3..f324021 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 4365277..dd70d57 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 -- GitLab