diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-05-12 13:30:35 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-05-12 13:30:35 -0600 |
commit | e5709fbc956d3395e7b401fd5198524e02542e81 (patch) | |
tree | ca528882e64927f2eeda4a2ac6756059c156e4e1 | |
parent | 42a95045240803c8ce2f3af9b63ab5a10c07ce0c (diff) |
Make (classinstance).send typecheck in HeatVisitor
-rw-r--r-- | heat/HeatVisitor.java | 3 | ||||
-rw-r--r-- | output/ex16.java | 22 | ||||
-rw-r--r-- | output/negative/DumbBracketSend-error.java | 22 | ||||
-rw-r--r-- | output/negative/DumbSend-error.java | 22 |
4 files changed, 68 insertions, 1 deletions
diff --git a/heat/HeatVisitor.java b/heat/HeatVisitor.java index 41fd3fe..e02f0d2 100644 --- a/heat/HeatVisitor.java +++ b/heat/HeatVisitor.java @@ -784,7 +784,7 @@ public class HeatVisitor extends GJDepthFirst<TypeBundle,ArrayList<TypeBundle>> t = new TypeInstance("null",null,null,null); ClassInstance c = this.recentClass; MinimalLogger.info(String.format("Setting class to the most recent return: %s", - c.toString())); + c)); t.addClassInstance(c); break; default: @@ -951,6 +951,7 @@ public class HeatVisitor extends GJDepthFirst<TypeBundle,ArrayList<TypeBundle>> n.getClass().getSimpleName())); /////////////////////////////////////////////////////////////// TypeInstance t = this.symt.getType(n.f0.tokenImage); + this.recentClass = t.getClassInstance(); _ret = new TypeBundle(t.getType(), t.getClassInstance()); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<- %s with %s", diff --git a/output/ex16.java b/output/ex16.java new file mode 100644 index 0000000..71dcede --- /dev/null +++ b/output/ex16.java @@ -0,0 +1,22 @@ +class ex16 { + public static void main(String[] a){ + System.out.println(new Test().start()); + } +} + +class Test { + + Test test; + int[] i; + + public int start() { + i = new int[10]; + test = (test).next(); + return 0; + } + + public Test next() { + System.out.println(1); + return test; + } +} diff --git a/output/negative/DumbBracketSend-error.java b/output/negative/DumbBracketSend-error.java new file mode 100644 index 0000000..263f66f --- /dev/null +++ b/output/negative/DumbBracketSend-error.java @@ -0,0 +1,22 @@ +class ex19 { + public static void main(String[] a){ + System.out.println(new Test().start()); + } +} + +class Test { + + Test test; + int[] i; + + public int start() { + i = new int[10]; + test = (i).next(); + return 0; + } + + public Test next() { + System.out.println(1); + return test; + } +} diff --git a/output/negative/DumbSend-error.java b/output/negative/DumbSend-error.java new file mode 100644 index 0000000..529ad39 --- /dev/null +++ b/output/negative/DumbSend-error.java @@ -0,0 +1,22 @@ +class DumbSend { + public static void main(String[] a){ + System.out.println(new Test().start()); + } +} + +class Test { + + Test test; + int[] i; + + public int start() { + i = new int[10]; + test = i.next(); + return 0; + } + + public Test next() { + System.out.println(1); + return test; + } +} |