From 2d27bff5ade6c1052d0923800e625b48f55e8fbe Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 2 Oct 2015 21:22:13 +0200 Subject: [PATCH] remove too smart wildcards assignments checks (IDEA-138957) --- .../src/com/intellij/psi/util/TypeConversionUtil.java | 10 +--------- .../genericsHighlighting/IDEA138957.java | 11 +++++++++++ .../codeInsight/daemon/GenericsHighlightingTest.java | 4 ++++ 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA138957.java 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 1f4cd2ccb9e0..73e9d216e21e 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 @@ -1005,16 +1005,8 @@ public class TypeConversionUtil { } } else { - boolean effectiveAllowUncheckedConversion = allowUncheckedConversion; - if (typeRight instanceof PsiCapturedWildcardType) { - effectiveAllowUncheckedConversion = false; - final PsiClass psiClass = PsiUtil.resolveClassInType(((PsiCapturedWildcardType)typeRight).getWildcard().getBound()); - if (psiClass != null && !psiClass.hasTypeParameters()) { - effectiveAllowUncheckedConversion = allowUncheckedConversion; - } - } if (leftWildcard.isExtends()) { - return isAssignable(leftBound, typeRight, effectiveAllowUncheckedConversion && !containsWildcards(leftBound)); + return isAssignable(leftBound, typeRight, false); } else { // isSuper final Boolean assignable = ourGuard.doPreventingRecursion(leftWildcard, true, new NotNullComputable() { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA138957.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA138957.java new file mode 100644 index 000000000000..6a109e2c61d7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA138957.java @@ -0,0 +1,11 @@ +import java.util.List; + +class MyClass +{ + public MyClass(Class type) {} + + public static void main(String[] args) + { + MyClass> myClass = new MyClass<>(List.class); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java index a620c792dd74..91b9b4317a0a 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -524,6 +524,10 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); } + public void testIDEA138957() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); + } + public void testJavaUtilCollections_NoVerify() throws Exception { PsiClass collectionsClass = getJavaFacade().findClass("java.util.Collections", GlobalSearchScope.moduleWithLibrariesScope(getModule())); assertNotNull(collectionsClass);