diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardCastConversion.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardCastConversion.java index 2d29970dbc02..389db6c27f05 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardCastConversion.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/WildcardCastConversion.java @@ -475,6 +475,27 @@ public class Test { } } } + + //IDEA-63447 + void testUnboundWildcardWithArrayTypes() { + class IUWWAT{ + private void method1(T[][] matrix) { + final Class type = (Class) matrix.getClass().getComponentType(); + } + + private void method2(T[][] matrix) { + final Class type = (Class) matrix.getClass().getComponentType(); + } + + private void method3(T[][] matrix) { + final Class type = (Class) matrix.getClass().getComponentType(); + } + + private void method4(T[][] matrix) { + final Class type = (Class) matrix.getClass().getComponentType(); + } + } + } } class W {} diff --git a/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java b/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java index 37f7ab9e2e8a..8484ef5f0c26 100644 --- a/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java +++ b/java/openapi/src/com/intellij/psi/util/TypesDistinctProver.java @@ -196,6 +196,9 @@ public class TypesDistinctProver { else if (bound instanceof PsiClassType) { return !possibleClasses.contains(((PsiClassType)bound).resolve()); } + else if (bound instanceof PsiWildcardType && !((PsiWildcardType)bound).isBounded()) { + return false; + } return true; } }