summaryrefslogtreecommitdiff
path: root/chapter22/src/main/java/com/seaofnodes
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-04-27 14:41:00 -0700
committerCliff Click <cliffc@acm.org>2025-04-27 14:41:00 -0700
commit71f9707231aca6edbfd7db3363d39929f265792d (patch)
tree1de389560c4d8e5d7630ea682324da819feca545 /chapter22/src/main/java/com/seaofnodes
parent033c08926a5d597058fff0e8fd605bcd238d36a0 (diff)
downloadSimple-71f9707231aca6edbfd7db3363d39929f265792d.tar.gz
Simple-71f9707231aca6edbfd7db3363d39929f265792d.zip
Evil test case for self-reference
Diffstat (limited to 'chapter22/src/main/java/com/seaofnodes')
-rw-r--r--chapter22/src/main/java/com/seaofnodes/simple/Parser.java10
1 files changed, 6 insertions, 4 deletions
diff --git a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
index b68c7f1f..d7f5087d 100644
--- a/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
+++ b/chapter22/src/main/java/com/seaofnodes/simple/Parser.java
@@ -783,10 +783,11 @@ public class Parser {
StructNode s = new StructNode();
Ary<Field> fs = new Ary<>(Field.class);
for( int i=lexlen; i<varlen; i++ ) {
- s.addDef(_scope.in(i));
Var v = _scope._vars.at(i);
- if( !v.isFRef() ) // Promote to outer scope, not defined here
- fs.push(Field.make(v._name,v.type(),_code.getALIAS(),v._final));
+ if( !v.isFRef() ) { // Promote to outer scope, not defined here
+ s.addDef(_scope.in(i));
+ fs.push( Field.make( v._name, v.type(), _code.getALIAS(), v._final ) );
+ }
}
TypeStruct ts = s._ts = TypeStruct.make(typeName, fs.asAry());
TYPES.put(typeName, TypeMemPtr.make(ts));
@@ -1452,7 +1453,8 @@ public class Parser {
}
// External linked constant
private Node externDecl( String ex, Type t ) {
- return new ExternNode(t,ex).peephole();
+ //return new ExternNode(t,ex).peephole();
+ throw Utils.TODO();
}
/**