summaryrefslogtreecommitdiff
path: root/chapter13/src
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-25 15:00:00 -0700
committerCliff Click <cliffc@acm.org>2026-09-25 15:00:00 -0700
commita32e83c9d81cfdb3759a2961d8b192ca44d75935 (patch)
tree9898306adf1a2d2432f333a50db5576999fb82c8 /chapter13/src
parente9e02b18ee3223f2cfe1990be00674f9868e1a26 (diff)
downloadSimple-a32e83c9d81cfdb3759a2961d8b192ca44d75935.tar.gz
Simple-a32e83c9d81cfdb3759a2961d8b192ca44d75935.zip
Bunch more animation work
Diffstat (limited to 'chapter13/src')
-rw-r--r--chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java12
-rw-r--r--chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java2
2 files changed, 12 insertions, 2 deletions
diff --git a/chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java b/chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java
index aed4a8e6..af3a9de6 100644
--- a/chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java
+++ b/chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java
@@ -1,5 +1,7 @@
package com.seaofnodes.simple.node;
+import com.seaofnodes.simple.Parser;
+
import com.seaofnodes.simple.type.Type;
import com.seaofnodes.simple.IterPeeps;
import com.seaofnodes.simple.GlobalCodeMotion;
@@ -69,9 +71,15 @@ public class StopNode extends CFGNode {
}
public StopNode iterate() { return IterPeeps.iterate(this).typeCheck().GCM(); }
- StopNode typeCheck() {
- String err = walk( Node::err );
+ public StopNode typeCheck() {
+ var obs = Parser.PARSER == null ? null : Parser.PARSER._obs;
+ String err = walk(n -> {
+ String msg = n.err();
+ if( msg != null && obs != null ) obs.error(n, msg);
+ return msg;
+ });
if( err != null ) throw new RuntimeException(err);
+ if( obs != null ) obs.phase("TypeCheck");
return this;
}
StopNode GCM() {
diff --git a/chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java b/chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java
index c745dfaf..3aabd79f 100644
--- a/chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java
+++ b/chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java
@@ -25,6 +25,8 @@ public class SimpleGraphObserver extends GraphCapture<Node> {
_phase = "Iter";
com.seaofnodes.simple.IterPeeps.iterate(_parser.STOP);
phase(_phase);
+ _phase = "TypeCheck";
+ _parser.STOP.typeCheck();
}
@Override protected String phase() { return _phase; }
@Override protected int pos() { return "Parse".equals(_phase) ? _parser.pos() : -1; }