diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiOldInferenceHelper.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiOldInferenceHelper.java index ba22da33366f..e68d41e85ecf 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiOldInferenceHelper.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/PsiOldInferenceHelper.java @@ -455,6 +455,10 @@ public class PsiOldInferenceHelper implements PsiInferenceHelper { if (arg == null) return null; } + if (arg instanceof PsiCapturedWildcardType) { + arg = ((PsiCapturedWildcardType)arg).getUpperBound(); + } + JavaResolveResult paramResult = ((PsiClassType)param).resolveGenerics(); PsiClass paramClass = (PsiClass)paramResult.getElement(); if (typeParam == paramClass) { @@ -473,10 +477,6 @@ public class PsiOldInferenceHelper implements PsiInferenceHelper { } if (paramClass == null) return null; - if (arg instanceof PsiCapturedWildcardType) { - arg = ((PsiCapturedWildcardType)arg).getUpperBound(); - } - if (!(arg instanceof PsiClassType)) return null; JavaResolveResult argResult = ((PsiClassType)arg).resolveGenerics(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/TopLevelCaptureConversion.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/TopLevelCaptureConversion.java new file mode 100644 index 000000000000..b1a7e1270907 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/TopLevelCaptureConversion.java @@ -0,0 +1,12 @@ +import java.util.Collection; +import java.util.Collections; +import java.util.Map; + +class Test { + private void foo(Map> map, String severity) { + firstNonNull(map.get(severity), Collections.emptyList()); + } + private static T firstNonNull(T first, T second) { + return first; + } +} 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 2b10c698a0c4..6509b511e9cb 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -609,4 +609,8 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIntersectTypeParameterBounds() throws Exception { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); } + + public void testTopLevelCaptureConversion() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); + } }