diff options
Diffstat (limited to 'st/SymTableVars.java')
-rw-r--r-- | st/SymTableVars.java | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/st/SymTableVars.java b/st/SymTableVars.java index f356a8c..36f02fc 100644 --- a/st/SymTableVars.java +++ b/st/SymTableVars.java @@ -122,6 +122,7 @@ public class SymTableVars<R> extends GJDepthFirst<R,SymbolTable> { (ClassInstance) symt.getActive(TypeEnum.classname), (MethodInstance) symt.getActive(TypeEnum.method)); TypeEnum rtrn = TypeEnum.ERROR; + String cls = null; switch (n.f0.f0.which) { case 0: rtrn = TypeEnum.intarray; break; @@ -130,7 +131,8 @@ public class SymTableVars<R> extends GJDepthFirst<R,SymbolTable> { case 2: rtrn = TypeEnum.integer; break; case 3: - rtrn = TypeEnum.classname; break; + rtrn = TypeEnum.classname; + cls = ((Identifier) n.f0.f0.choice).f0.tokenImage; break; default: MinimalLogger.severe("Unsupported case"); } @@ -139,7 +141,7 @@ public class SymTableVars<R> extends GJDepthFirst<R,SymbolTable> { (ClassInstance) symt.getActive(TypeEnum.classname)); symt.put(id, instance); symt.addLocal(id.getName()); - + symt.addClassInstance(instance, cls); return null; } |