diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-26 16:02:24 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-26 16:02:24 -0700 |
| commit | 4391fcc03a214e6296e19ca42487de023ab12f6a (patch) | |
| tree | 7eca88e0bea31cdae4d5f485b84604a41c82f795 /chapter25/src/test/java/com | |
| parent | dd907c2d86eaaad0910e7bfe3f0d25e5caf8bdf7 (diff) | |
| download | Simple-4391fcc03a214e6296e19ca42487de023ab12f6a.tar.gz Simple-4391fcc03a214e6296e19ca42487de023ab12f6a.zip | |
bug fix widen
Failed lattice law tests mixing constants and have wide type ints; or mixing wide ints and constant arrays.
Diffstat (limited to 'chapter25/src/test/java/com')
| -rw-r--r-- | chapter25/src/test/java/com/seaofnodes/simple/TypeTest.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/chapter25/src/test/java/com/seaofnodes/simple/TypeTest.java b/chapter25/src/test/java/com/seaofnodes/simple/TypeTest.java index b83cc9e6..b9cba5e8 100644 --- a/chapter25/src/test/java/com/seaofnodes/simple/TypeTest.java +++ b/chapter25/src/test/java/com/seaofnodes/simple/TypeTest.java @@ -7,6 +7,22 @@ import static org.junit.Assert.assertSame; public class TypeTest { + // Removing zero must not reset the widening history of a remaining range. + @Test public void testNonZeroWidening() { + for( byte widen=0; widen<=3; widen++ ) { + TypeInteger pos = TypeInteger.make(0,255,widen).nonZero(); + TypeInteger neg = TypeInteger.make(-255,0,widen).nonZero(); + Assert.assertEquals("positive range widening",widen,pos._widen); + Assert.assertEquals("negative range widening",widen,neg._widen); + assertSame(TypeInteger.make(1,255,widen),pos); + assertSame(TypeInteger.make(-255,-1,widen),neg); + // Singleton ranges retain their widening level too. + assertSame(TypeInteger.make(1,1,widen),TypeInteger.make(0,1,widen).nonZero()); + assertSame(TypeInteger.make(-1,-1,widen),TypeInteger.make(-1,0,widen).nonZero()); + } + Assert.assertNull(TypeInteger.ZERO.nonZero()); + } + // Struct hashes omit field types, so interning compares unlike leaf kinds. @Test public void testCyclicLeafKinds() { |
