From 9308c52a3d746425e05fc3d451f888ba89baef66 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 30 Nov 2015 20:59:14 +0100 Subject: [PATCH] captured wildcards: check upper bound first --- .../src/com/intellij/psi/util/TypeConversionUtil.java | 7 ++++--- .../RejectEqualsBoundsContradictingLowerBound.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java index 73e9d216e21e..4f2c8e137e21 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/TypeConversionUtil.java @@ -749,13 +749,14 @@ public class TypeConversionUtil { return false; } - if (left instanceof PsiCapturedWildcardType) { - return left.equals(right) || isAssignable(((PsiCapturedWildcardType)left).getLowerBound(), right, allowUncheckedConversion); - } if (right instanceof PsiCapturedWildcardType) { return isAssignable(left, ((PsiCapturedWildcardType)right).getUpperBound(), allowUncheckedConversion); } + if (left instanceof PsiCapturedWildcardType) { + return left.equals(right) || isAssignable(((PsiCapturedWildcardType)left).getLowerBound(), right, allowUncheckedConversion); + } + if (left instanceof PsiWildcardType) { return isAssignableToWildcard((PsiWildcardType)left, right); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/RejectEqualsBoundsContradictingLowerBound.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/RejectEqualsBoundsContradictingLowerBound.java index a9b829f574e7..815ad4824856 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/RejectEqualsBoundsContradictingLowerBound.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/RejectEqualsBoundsContradictingLowerBound.java @@ -4,7 +4,7 @@ abstract class A { void baz37(B a) {} abstract B foo37(); void bar37(A a){ - baz37(a.foo37()); + baz37(a.foo37()); } void baz39(B a) {}