diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-04-25 16:59:15 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-04-25 16:59:15 -0600 |
commit | 34fad9467618d10178d55f30c034f93ce03ada25 (patch) | |
tree | 494b3fd4cb4797070232b5add521f35c2adc70d8 /boil/library | |
parent | 971666e64a46f342d633c4410ef08f216c5049b4 (diff) |
BoilVisitor.MessageSend for Bracket, proper class Extension in ST
Diffstat (limited to 'boil/library')
-rw-r--r-- | boil/library/BoilVisitor.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/boil/library/BoilVisitor.java b/boil/library/BoilVisitor.java index 560dda8..7ae02b2 100644 --- a/boil/library/BoilVisitor.java +++ b/boil/library/BoilVisitor.java @@ -13,6 +13,8 @@ public class BoilVisitor extends GJDepthFirst<String,String> { private int id; private SymbolTable symt; + private MethodInstance recentMethod = null; // the most recent method called + public BoilVisitor(SymbolTable symt) { this.symt = symt; this.vapor = ""; @@ -930,6 +932,8 @@ public class BoilVisitor extends GJDepthFirst<String,String> { MinimalLogger.info("Message send found an IDENTIFIER"); rhs = ((Identifier) n.f0.f0.choice).f0.tokenImage; t = this.symt.getType(rhs); + if (t == null) + t = this.symt.getTypeAttr(rhs); break; case 4: // we'll do everything here and exit the function @@ -952,6 +956,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { this.tf.retrieveRecentList(this.symt.getMethod(mtd, cur) .getArguments() .size()))); + this.recentMethod = this.symt.getMethod(mtd, cur); return _ret; case 6: MinimalLogger.info("Message send found ANONYMOUS"); @@ -971,8 +976,18 @@ public class BoilVisitor extends GJDepthFirst<String,String> { 0, rhs)); break; + case 8: + MinimalLogger.info("Message send found BRACKET"); + rhs = n.f0.accept(this, argu); + ClassInstance cls = this.recentMethod.getReturn(); + t = new TypeInstance(this.getUniqueID(), TypeEnum.ERROR, + (MethodInstance) this.symt.getActive(TypeEnum.method), + (ClassInstance) this.symt.getActive(TypeEnum.classname)); + t.addClassInstance(cls); + break; default: - MinimalLogger.severe("Message send found UNKNOWN"); + MinimalLogger.severe(String.format("Message send found UNKNOWN %s", + n.f0.f0.choice.toString())); rhs = null; t = null; } @@ -988,6 +1003,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { MinimalLogger.info("Calculating method index to call..."); MinimalLogger.severe("t: " + t); MinimalLogger.severe("t.getClassInstance() " + t.getClassInstance()); + this.recentMethod = this.symt.getMethod(mtd, t.getClassInstance()); int mtdIndex = t.getClassInstance().getMethods() .indexOf(this.symt.getMethod(mtd, t.getClassInstance())) * 4; @@ -1227,7 +1243,7 @@ public class BoilVisitor extends GJDepthFirst<String,String> { * f1 -> Expression() */ public String visit(NotExpression n, String argu) { - String _ret=null; + String _ret=""; MinimalLogger.info(String.format("-> %s", n.getClass().getSimpleName())); _ret += this.tf.alias(this.getUniqueID()); |