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 eb25600e3595..24e1c6fbc884 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 @@ -1111,6 +1111,8 @@ public class TypeConversionUtil { */ @NotNull public static PsiType binaryNumericPromotion(PsiType type1, PsiType type2) { + type1 = uncapture(type1); + type2 = uncapture(type2); if (isDoubleType(type1)) return unbox(type1); if (isDoubleType(type2)) return unbox(type2); if (isFloatType(type1)) return unbox(type1); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/UnboxingWildcards.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/UnboxingWildcards.java new file mode 100644 index 000000000000..c741ea4c9dc6 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/UnboxingWildcards.java @@ -0,0 +1,11 @@ +import java.util.*; +import java.io.*; + +class X { + public void save(Collection value) throws IOException { + assert value.isEmpty() || value.size() == 1; + writeLONG(value.isEmpty() ? 0 : value.iterator().next()); + } + public static void writeLONG(long val) throws IOException { + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java index f0824fbf57e1..fbb1a16ccc09 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/GenericsHighlightingTest.java @@ -25,9 +25,7 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.util.RecursionManager; import com.intellij.pom.java.LanguageLevel; -import com.intellij.psi.GenericsUtil; -import com.intellij.psi.PsiManager; -import com.intellij.psi.PsiType; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.testFramework.IdeaTestUtil; import org.jetbrains.annotations.NotNull; @@ -442,4 +440,5 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testCheckAccessibilityBeforeSuperFieldReferenceInSuperCall() { doTest6(false); } public void testIDEA128159() { doTest6(false); } public void testIDEA139214() { doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_8, false); } + public void testUnboxingWildcards() { doTest(LanguageLevel.JDK_1_6, JavaSdkVersion.JDK_1_8, false); } } \ No newline at end of file