summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sources/scalac/transformer/TypesAsValuesPhase.java14
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;
}
/**