summaryrefslogtreecommitdiff
path: root/chapter25/src/main/java
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2026-09-20 10:22:52 -0700
committerCliff Click <cliffc@acm.org>2026-09-20 10:22:52 -0700
commit942a85c5be51686d7a426d8f21e66cd8ea57e945 (patch)
treedccf5d4ebdbce8f59dd73bc10b85fc127955ee98 /chapter25/src/main/java
parentdb3ca780c26b78cbe129a5c1bdf0d8ff7d867d1b (diff)
downloadSimple-942a85c5be51686d7a426d8f21e66cd8ea57e945.tar.gz
Simple-942a85c5be51686d7a426d8f21e66cd8ea57e945.zip
Backport TypeFunPtr normalization
Diffstat (limited to 'chapter25/src/main/java')
-rw-r--r--chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
index fdf7fe2f..a553f90e 100644
--- a/chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
+++ b/chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java
@@ -110,6 +110,14 @@ public class TypeFunPtr extends TypeNil {
ts.add(make1((byte)2,true,
new Type[]{TypeInteger.BOT, TypeScalar.BOT},
TypeInteger.BOT, 65));
+ // Explicit trailing defaults must agree with the implicit argument tail.
+ for( boolean open : new boolean[]{false,true} ) {
+ Type def = open ? TypeScalar.BOT : TypeScalar.TOP;
+ ts.add(make1((byte)2,open,TINT,TypeInteger.I32,1));
+ ts.add(make1((byte)2,open,new Type[]{TypeInteger.BOT,def,def},TypeInteger.I32,1));
+ ts.add(make1((byte)2,open,new Type[]{def,def},TypeInteger.I32,1));
+ ts.add(make1((byte)2,open,new Type[]{def,TypeInteger.BOT},TypeInteger.I32,1));
+ }
}
private static final Type[] ARG_EMPTY = new Type[0];