From 0225b868a46a15c867144b8da2c7924ff211542c Mon Sep 17 00:00:00 2001
From: Nicholas Robinson <nwrobins@edu.uwaterloo.ca>
Date: Fri, 28 Feb 2020 13:06:02 -0500
Subject: [PATCH] getParseTreeNodes & TypeNode name

- fixed getParseTreeNodes
- fixed getting name for TypeNode
---
 AST.py         | 2 +-
 Environment.py | 7 ++++---
 Test.py        | 4 ++--
 TypeNodes.py   | 4 ----
 UnitNodes.py   | 1 +
 5 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/AST.py b/AST.py
index 32e405a..4a219c7 100644
--- a/AST.py
+++ b/AST.py
@@ -95,5 +95,5 @@ def getParseTreeNodes(names, tree, terminateList = []):
         elif n.name in terminateList:
             continue
         else:
-            result.extend(getParseTreeNodes(names, n))
+            result.extend(getParseTreeNodes(names, n, terminateList))
     return result
diff --git a/Environment.py b/Environment.py
index 3d63f14..a798f82 100644
--- a/Environment.py
+++ b/Environment.py
@@ -104,9 +104,8 @@ class GlobalEnv(Env):
         # 1. enclosing class/interface
         #    - already did
         # 2. single-type import
-        if name in imported:
-            if name in self.map:
-                return self.map.get(name)
+        if name in imported and name in self.map:
+            return self.map.get(name)
         # 3. type in the current package
         full = packageName + '.' + name
         # print(full)
@@ -123,6 +122,8 @@ class GlobalEnv(Env):
         for i in implicitly:
             if i in name and name in self.map:
                 return self.map.get(name)
+            elif (i+name) in self.map:
+                return self.map.get(i+name)
 
         raise Exception("ERROR: Can't find definition of {} in the Environment".format(key))
 
diff --git a/Test.py b/Test.py
index 3936a41..146b224 100644
--- a/Test.py
+++ b/Test.py
@@ -45,9 +45,9 @@ def a2Multiple():
         print(c)
         print("**********************************************************")
         # get all files from stdlib folder
-        # testFiles = [join(dp, f) for dp, dn, filenames in walk('stdlib/2.0/java/') for f in filenames]
+        testFiles = [join(dp, f) for dp, dn, filenames in walk('stdlib/2.0/java/') for f in filenames]
         # get all files in the folder recursively
-        testFiles = [join(dp, f) for dp, dn, filenames in walk(c) for f in filenames]
+        testFiles += [join(dp, f) for dp, dn, filenames in walk(c) for f in filenames]
         run(testFiles)
         print("\n \n\n ")
 
diff --git a/TypeNodes.py b/TypeNodes.py
index a75a773..2e6ab12 100644
--- a/TypeNodes.py
+++ b/TypeNodes.py
@@ -95,12 +95,8 @@ class ClassNode(ASTNode):
         # 7. A class or interface must not declare two methods with the same signature (name and parameter types).
         unique = []
         for method in self.methods:
-            # print(method.name)
             key = (method.name, method.paramTypes)
             if key in unique:
-                # print(self.methods)
-                # print(key)
-                # print(unique)
                 raise Exception("ERROR: Class '{}' declares 2 methods with the same signature '{}'".format(self.name, key[0]))
             unique.append(key)
 
diff --git a/UnitNodes.py b/UnitNodes.py
index 4764238..108dc37 100644
--- a/UnitNodes.py
+++ b/UnitNodes.py
@@ -63,6 +63,7 @@ class TypeNode(ASTNode):
             nameNodes = getParseTreeNodes(['BOOLEAN', 'BYTE', 'CHAR', 'INT', 'SHORT'], parseTree)
             if nameNodes:
                 self.isPrimType = True
+                self.name = nameNodes[0].lex
             else:
                 self.name = getParseTreeNodes(['ID', 'COMPID'], parseTree)[0].lex
 
-- 
GitLab