diff options
| author | Cliff Click <cliffc@acm.org> | 2026-09-20 10:22:52 -0700 |
|---|---|---|
| committer | Cliff Click <cliffc@acm.org> | 2026-09-20 10:22:52 -0700 |
| commit | 942a85c5be51686d7a426d8f21e66cd8ea57e945 (patch) | |
| tree | dccf5d4ebdbce8f59dd73bc10b85fc127955ee98 /chapter25/src | |
| parent | db3ca780c26b78cbe129a5c1bdf0d8ff7d867d1b (diff) | |
| download | Simple-942a85c5be51686d7a426d8f21e66cd8ea57e945.tar.gz Simple-942a85c5be51686d7a426d8f21e66cd8ea57e945.zip | |
Backport TypeFunPtr normalization
Diffstat (limited to 'chapter25/src')
| -rw-r--r-- | chapter25/src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java | 8 |
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]; |
