diff options
| author | Cliff Click <cliffc@acm.org> | 2025-04-27 14:41:00 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2025-04-27 14:41:00 -0700 |
| commit | 71f9707231aca6edbfd7db3363d39929f265792d (patch) | |
| tree | 1de389560c4d8e5d7630ea682324da819feca545 /chapter22/src/main | |
| parent | 033c08926a5d597058fff0e8fd605bcd238d36a0 (diff) | |
| download | Simple-71f9707231aca6edbfd7db3363d39929f265792d.tar.gz Simple-71f9707231aca6edbfd7db3363d39929f265792d.zip | |
Evil test case for self-reference
Diffstat (limited to 'chapter22/src/main')
| -rw-r--r-- | chapter22/src/main/java/com/seaofnodes/simple/Parser.java | 10 |
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(); } /** |
