diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-25 15:00:00 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-25 15:00:00 -0700 |
| commit | a32e83c9d81cfdb3759a2961d8b192ca44d75935 (patch) | |
| tree | 9898306adf1a2d2432f333a50db5576999fb82c8 /chapter13/src/main/java | |
| parent | e9e02b18ee3223f2cfe1990be00674f9868e1a26 (diff) | |
| download | Simple-a32e83c9d81cfdb3759a2961d8b192ca44d75935.tar.gz Simple-a32e83c9d81cfdb3759a2961d8b192ca44d75935.zip | |
Bunch more animation work
Diffstat (limited to 'chapter13/src/main/java')
| -rw-r--r-- | chapter13/src/main/java/com/seaofnodes/simple/node/StopNode.java | 12 | ||||
| -rw-r--r-- | chapter13/src/main/java/com/seaofnodes/simple/print/SimpleGraphObserver.java | 2 |
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; } |
