diff options
Diffstat (limited to 'org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java')
-rw-r--r-- | org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java index 64950c21d..07cf5b3d4 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/ParameterizedTypeBinding.java @@ -521,17 +521,17 @@ public class ParameterizedTypeBinding extends ReferenceBinding implements Substi // * Bi is not a subtype of U, // then Ai' is an upper-bounded wildcard, ? extends U. if (u.id != TypeIds.T_JavaLangObject - && (b_i.mentionsAny(typeVariables, -1) || b_i.findSuperTypeOriginatingFrom(u) == null)) { - a_i_primes[i] = this.environment().createWildcard(null, i, u, null, Wildcard.EXTENDS); + && (b_i.mentionsAny(typeVariables, -1) || !b_i.isSubtypeOf(u))) { + a_i_primes[i] = this.environment().createWildcard(genericType(), i, u, null, Wildcard.EXTENDS); } else { TypeBinding l = a_i.downwardsProjection(scope, mentionedTypeVariables); // Otherwise, if the downward projection of Ai is L, // then Ai' is a lower-bounded wildcard, ? super L. if (l != null) { - a_i_primes[i] = this.environment().createWildcard(null, i, l, null, Wildcard.SUPER); + a_i_primes[i] = this.environment().createWildcard(genericType(), i, l, null, Wildcard.SUPER); } else { // Otherwise, the downward projection of Ai is undefined and Ai' is an unbounded wildcard, ?. - a_i_primes[i] = this.environment().createWildcard(null, i, null, null, Wildcard.UNBOUND); + a_i_primes[i] = this.environment().createWildcard(genericType(), i, null, null, Wildcard.UNBOUND); } } } else { @@ -1884,7 +1884,7 @@ public class ParameterizedTypeBinding extends ReferenceBinding implements Substi if (newArguments[i] == null) { newArguments[i] = new ProblemReferenceBinding(arg.internalName(), (arg instanceof ReferenceBinding) ? (ReferenceBinding)arg: null, - ProblemReasons.NotFound); + ProblemReasons.NotFound, true); continue; // not a good modification } modified |= (newArguments[i] != arg); //$IDENTITY-COMPARISON$ |