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