diff options
-rw-r--r-- | sources/scalac/transformer/TypesAsValuesPhase.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sources/scalac/transformer/TypesAsValuesPhase.java b/sources/scalac/transformer/TypesAsValuesPhase.java index 52b84333fe..394373bd94 100644 --- a/sources/scalac/transformer/TypesAsValuesPhase.java +++ b/sources/scalac/transformer/TypesAsValuesPhase.java @@ -975,6 +975,9 @@ public class TypesAsValuesPhase extends Phase { addConstructorsNeededBy(roots, args[i], set); } break; + case CompoundType(Type[] parts, _): + for (int i = 0; i < parts.length; ++i) + addConstructorsNeededBy(roots, parts[i], set); default: ; // nothing to do } @@ -1000,7 +1003,16 @@ public class TypesAsValuesPhase extends Phase { } private boolean isCyclic(Symbol sym) { - return constructorsNeededBy(sym).contains(sym); + HashSet constrs = constructorsNeededBy(sym); + if (constrs.contains(sym)) + return true; + Iterator constrsIt = constrs.iterator(); + while (constrsIt.hasNext()) { + Symbol constr = (Symbol)constrsIt.next(); + if (constr.isAbstractType()) + return true; + } + return false; } /** |