From 942a85c5be51686d7a426d8f21e66cd8ea57e945 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sun, 20 Sep 2026 10:22:52 -0700 Subject: Backport TypeFunPtr normalization --- .../src/main/java/com/seaofnodes/simple/type/TypeFunPtr.java | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'chapter25/src') 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]; -- cgit v1.2.3