diff options
author | mcimadamore <none@none> | 2011-04-12 20:58:06 -0700 |
---|---|---|
committer | mcimadamore <none@none> | 2011-04-12 20:58:06 -0700 |
commit | a033f58d2c3d71329a2e2c4dbf4a6fe36b4538bd (patch) | |
tree | e473c267fbb84c94a6b4a06b5da160cbc620b29a /src/share/classes/com/sun/tools/javac/comp/Resolve.java | |
parent | 0f687cdd3ae597526fe51795e9186d5735bce9ba (diff) |
7034019: ClassCastException in javac with conjunction types
Summary: Resolve.mostSpecific doesn't handle case of raw override
Reviewed-by: dlsmith
Diffstat (limited to 'src/share/classes/com/sun/tools/javac/comp/Resolve.java')
-rw-r--r-- | src/share/classes/com/sun/tools/javac/comp/Resolve.java | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/share/classes/com/sun/tools/javac/comp/Resolve.java b/src/share/classes/com/sun/tools/javac/comp/Resolve.java index 301a3aeb..94ddd16f 100644 --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java @@ -770,12 +770,9 @@ public class Resolve { return ambiguityError(m1, m2); // both abstract, neither overridden; merge throws clause and result type Symbol mostSpecific; - Type result2 = mt2.getReturnType(); - if (mt2.tag == FORALL) - result2 = types.subst(result2, ((ForAll)mt2).tvars, ((ForAll)mt1).tvars); - if (types.isSubtype(mt1.getReturnType(), result2)) + if (types.returnTypeSubstitutable(mt1, mt2)) mostSpecific = m1; - else if (types.isSubtype(result2, mt1.getReturnType())) + else if (types.returnTypeSubstitutable(mt2, mt1)) mostSpecific = m2; else { // Theoretically, this can't happen, but it is possible |