--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Wed Nov 04 12:27:00 2015 +0100
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java Thu Nov 05 11:32:01 2015 +0000
@@ -1495,10 +1495,10 @@
}
}
- if (t.isIntersection() || s.isIntersection()) {
- return !t.isIntersection() ?
- visitIntersectionType((IntersectionClassType)s, t, true) :
- visitIntersectionType((IntersectionClassType)t, s, false);
+ if (t.isCompound() || s.isCompound()) {
+ return !t.isCompound() ?
+ visitCompoundType((ClassType)s, t, true) :
+ visitCompoundType(t, s, false);
}
if (s.hasTag(CLASS) || s.hasTag(ARRAY)) {
@@ -1576,9 +1576,9 @@
return false;
}
- boolean visitIntersectionType(IntersectionClassType ict, Type s, boolean reverse) {
+ boolean visitCompoundType(ClassType ct, Type s, boolean reverse) {
Warner warn = noWarnings;
- for (Type c : ict.getComponents()) {
+ for (Type c : directSupertypes(ct)) {
warn.clear();
if (reverse ? !isCastable(s, c, warn) : !isCastable(c, s, warn))
return false;
@@ -2399,14 +2399,9 @@
? interfaces(type)
: interfaces(type).prepend(sup);
} else {
- return visitIntersectionType((IntersectionClassType) type);
+ return ((IntersectionClassType)type).getExplicitComponents();
}
}
-
- private List<Type> visitIntersectionType(final IntersectionClassType it) {
- return it.getExplicitComponents();
- }
-
};
public boolean isDirectSuperInterface(TypeSymbol isym, TypeSymbol origin) {
@@ -4152,7 +4147,7 @@
private boolean giveWarning(Type from, Type to) {
List<Type> bounds = to.isCompound() ?
- ((IntersectionClassType)to).getComponents() : List.of(to);
+ directSupertypes(to) : List.of(to);
for (Type b : bounds) {
Type subFrom = asSub(from, b.tsym);
if (b.isParameterized() &&