summaryrefslogtreecommitdiff
path: root/chapter17/src/test/java/com
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2024-11-13 20:53:05 -0800
committerCliff Click <cliffc@acm.org>2024-11-23 09:03:20 -0800
commit477c71d89d107936cd0c4776bb2d5ff37cb91539 (patch)
treed2f4dcec5620a757b44615c0db515e5142900f49 /chapter17/src/test/java/com
parent3652f49f679de25a2544225d6a3600a63b693ba0 (diff)
downloadSimple-477c71d89d107936cd0c4776bb2d5ff37cb91539.tar.gz
Simple-477c71d89d107936cd0c4776bb2d5ff37cb91539.zip
Allow oper-assign, += -= etc
Diffstat (limited to 'chapter17/src/test/java/com')
-rw-r--r--chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java b/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
index b1f7eb43..176a9236 100644
--- a/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
+++ b/chapter17/src/test/java/com/seaofnodes/simple/Chapter17Test.java
@@ -105,6 +105,14 @@ return s.x;
assertEquals(255L, Evaluator.evaluate(stop, 0));
}
+ @Test
+ public void testInc8() {
+ Parser parser = new Parser("int x; x+=2; return x+=3;");
+ StopNode stop = parser.parse().iterate();
+ assertEquals("return 5;", stop.toString());
+ assertEquals(5L, Evaluator.evaluate(stop, 0));
+ }
+
// ---------------------------------------------------------------
@Test public void testVar0() {
Parser parser = new Parser("var d; return d;");
@@ -288,7 +296,7 @@ return b ? b.next ? b.next.x : b.x; // parses "b ? (b.next ? b.next.x : b.x) : 0
Parser parser = new Parser("""
int sum=0;
for( int i=0; i<arg; i++ )
- sum = sum + i;
+ sum += i;
return sum;
""");
StopNode stop = parser.parse().iterate();
@@ -301,7 +309,7 @@ return sum;
Parser parser = new Parser("""
int sum=0, i=0;
for( ; i<arg; i++ )
- sum = sum + i;
+ sum += i;
return sum;
""");
StopNode stop = parser.parse().iterate();
@@ -315,7 +323,7 @@ return sum;
int sum=0;
for( int i=0; ; i++ ) {
if( i>=arg ) break;
- sum = sum + i;
+ sum += i;
}
return sum;
""");
@@ -329,7 +337,7 @@ return sum;
Parser parser = new Parser("""
int sum=0;
for( int i=0; i<arg; )
- sum = sum + i++;
+ sum += i++;
return sum;
""");
StopNode stop = parser.parse().iterate();
@@ -342,7 +350,7 @@ return sum;
Parser parser = new Parser("""
int sum=0;
for( int i=0; i<arg; i++ )
- sum = sum + i;
+ sum += i;
return i;
""");
try { parser.parse().iterate(); fail(); }
@@ -361,7 +369,7 @@ while( arg-- )
int sum=0;
var ptr = head; // A read-only ptr, to be assigned from read-only next fields
for( ; ptr; ptr = ptr.next )
- sum = sum + ptr.i;
+ sum += ptr.i;
return sum;
""");
StopNode stop = parser.parse().iterate();
@@ -382,7 +390,7 @@ for( p=2; p*p < arg; p++ ) {
// p is now a prime
primes[nprimes++] = p;
// Mark out the rest non-primes
- for( int i = p + p; i < ary#; i = i + p )
+ for( int i = p + p; i < ary#; i += p )
ary[i] = true;
}
// Now just collect the remaining primes, no more marking