summaryrefslogtreecommitdiff
path: root/chapter23/src
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-26 16:02:24 -0700
committerCliff Click <cliffc@acm.org>2026-09-26 16:02:24 -0700
commit4391fcc03a214e6296e19ca42487de023ab12f6a (patch)
tree7eca88e0bea31cdae4d5f485b84604a41c82f795 /chapter23/src
parentdd907c2d86eaaad0910e7bfe3f0d25e5caf8bdf7 (diff)
downloadSimple-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 'chapter23/src')
-rw-r--r--chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAry.java12
-rw-r--r--chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryB.java4
-rw-r--r--chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryI.java6
3 files changed, 9 insertions, 13 deletions
diff --git a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAry.java b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAry.java
index d4003f87..84cccd12 100644
--- a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAry.java
+++ b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAry.java
@@ -1,6 +1,5 @@
package com.seaofnodes.simple.type;
-import com.seaofnodes.simple.util.SB;
import com.seaofnodes.simple.util.Utils;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
@@ -13,18 +12,19 @@ public class TypeConAry<A> extends Type {
// One of byte,short,int,long,float,double array
public final A _ary;
- TypeConAry( boolean any, byte type, A ary ) { super(type); _any = any; _ary = ary; }
- public static final TypeConAry BOT = new TypeConAry(false, TINT, null).intern();
+ TypeConAry( boolean any, A ary ) { super(TINT); _any = any; _ary = ary; }
+ public static final TypeConAry BOT = new TypeConAry(false,null).intern();
public static void gather(ArrayList<Type> ts) {
ts.add(BOT);
- TypeConAryB.gather(ts);
- TypeConAryI.gather(ts);
+ ts.add(TypeConAryB.ABC);
+ ts.add(TypeConAryB.ABCD);
+ ts.add(TypeConAryI.I123);
}
@Override public String str() { return (_any?"~":"") + "[]"; }
@Override TypeConAry xdual() {
if( _ary==null )
- return new TypeConAry(!_any,_type,null);
+ return new TypeConAry(!_any,null);
return this;
}
diff --git a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryB.java b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryB.java
index 9e5f0a2d..75f08bef 100644
--- a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryB.java
+++ b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryB.java
@@ -1,16 +1,14 @@
package com.seaofnodes.simple.type;
-import java.util.ArrayList;
import java.util.Arrays;
import java.io.ByteArrayOutputStream;
public class TypeConAryB extends TypeConAry<byte[]> {
- private TypeConAryB(byte[] bs) { super(false,TINT,bs); }
+ private TypeConAryB(byte[] bs) { super(false,bs); }
public static TypeConAryB make( byte[] bs ) { return new TypeConAryB(bs).intern(); }
public static TypeConAryB make( String s ) { return make(s.getBytes()); }
static final TypeConAryB ABC = make("abc");
static final TypeConAryB ABCD = make("abcd");
- public static void gather(ArrayList<Type> ts) { ts.add(ABC); ts.add(ABCD); }
@Override public long at8(int idx) { return _ary[idx]; }
@Override public int len() { return _ary.length; }
@Override public int log_size() { return 0; }
diff --git a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryI.java b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryI.java
index 924e3d73..577de82c 100644
--- a/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryI.java
+++ b/chapter23/src/main/java/com/seaofnodes/simple/type/TypeConAryI.java
@@ -1,13 +1,11 @@
package com.seaofnodes.simple.type;
-import java.util.ArrayList;
import java.util.Arrays;
public class TypeConAryI extends TypeConAry<int[]> {
- private TypeConAryI(int[] bs) { super(false,TINT,bs); }
+ private TypeConAryI(int[] bs) { super(false,bs); }
public static TypeConAryI make( int[] bs ) { return new TypeConAryI(bs).intern(); }
- private static final TypeConAryI I123 = make(new int[]{1,2,3});
- public static void gather(ArrayList<Type> ts) { ts.add(I123); }
+ static final TypeConAryI I123 = make(new int[]{1,2,3});
@Override public long at8(int idx) { return _ary[idx]; }
@Override public int len() { return _ary.length; }
@Override public int log_size() { return 2; }