From 78c05c5995589a661f0ac5c6ec9376a122412a61 Mon Sep 17 00:00:00 2001 From: paltherr Date: Mon, 8 Sep 2003 15:27:09 +0000 Subject: - Updated the code that transforms interface co... - Updated the code that transforms interface constructors --- sources/scalac/transformer/AddInterfacesPhase.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sources/scalac/transformer/AddInterfacesPhase.java b/sources/scalac/transformer/AddInterfacesPhase.java index cb42bc15fd..ca3342a86b 100644 --- a/sources/scalac/transformer/AddInterfacesPhase.java +++ b/sources/scalac/transformer/AddInterfacesPhase.java @@ -136,10 +136,8 @@ public class AddInterfacesPhase extends Phase { return new Type.MethodType(Symbol.EMPTY_ARRAY, result); case PolyType(Symbol[] tps, Type result): return new Type.PolyType(tps, removeValueParams(result)); - case OverloadedType(_, Type[] altTypes): - return removeValueParams(altTypes[0]); default: - return tp; + throw Debug.abort("illegal case", tp); } } @@ -209,6 +207,15 @@ public class AddInterfacesPhase extends Phase { classSym.name = className(ifaceSym.name); classSym.flags &= ~Modifiers.INTERFACE; + // Remove non-primary constructors from interface + if (ifaceSym.allConstructors().isOverloaded()) { + Symbol primary = ifaceSym.primaryConstructor(); + Symbol[] altsyms = { primary }; + Type[] alttypes = { primary.nextType() }; + Type allType = Type.OverloadedType(altsyms, alttypes); + ifaceSym.allConstructors().updateInfo(allType); + } + Scope ifaceOwnerMembers = ifaceSym.owner().members(); ifaceOwnerMembers.enter(classSym); -- cgit v1.2.3