summaryrefslogtreecommitdiff
path: root/chapter17/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'chapter17/src/test/java/com')
-rw-r--r--chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java b/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
index 176a9236..516da849 100644
--- a/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
+++ b/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
@@ -356,7 +356,31 @@ return i;
try { parser.parse().iterate(); fail(); }
catch( Exception e ) { assertEquals("Undefined name 'i'",e.getMessage()); }
}
+ @Test
+ public void testFor5() {
+ Parser parser = new Parser("""
+for(;;arg++;) {}
+""");
+ try { parser.parse().iterate(); fail(); }
+ catch( Exception e ) { assertEquals("Syntax error, expected Unexpected code after expression: ;",e.getMessage()); }
+ }
+
+
+ // ---------------------------------------------------------------
+ @Test
+ public void testForward() {
+ Parser parser = new Parser("""
+struct A{
+ B? f1;
+ B? f2;
+};
+return new A;
+""");
+ StopNode stop = parser.parse().iterate();
+ assertEquals("return A;", stop.toString());
+ assertEquals("Obj<A>{f1=null,f2=null}", Evaluator.evaluate(stop).toString());
+ }
// ---------------------------------------------------------------
@Test