From e31a81243810588c80985137a0a58b4751a6736e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 14 Mar 2016 12:44:15 +0100 Subject: [PATCH] inference: unchecked warning in type params bounds (IDEA-152758) --- .../InferenceIncorporationPhase.java | 3 +++ ...checkedWarningsInsideIncorporationPhase.java | 17 +++++++++++++++++ .../lambda/GenericsHighlighting8Test.java | 4 ++++ 3 files changed, 24 insertions(+) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/UncheckedWarningsInsideIncorporationPhase.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceIncorporationPhase.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceIncorporationPhase.java index f0836241b31d..633a5e5b6e31 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceIncorporationPhase.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/InferenceIncorporationPhase.java @@ -296,6 +296,9 @@ public class InferenceIncorporationPhase { if (eqBound == null || PsiType.NULL.equals(eqBound) || eqBound instanceof PsiWildcardType) continue; if (Registry.is("javac.unchecked.subtyping.during.incorporation", true)) { if (TypeCompatibilityConstraint.isUncheckedConversion(upperBound, eqBound)) { + if (PsiUtil.resolveClassInType(eqBound) instanceof PsiTypeParameter) { + mySession.setErased(); + } continue; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/UncheckedWarningsInsideIncorporationPhase.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/UncheckedWarningsInsideIncorporationPhase.java new file mode 100644 index 000000000000..7fca5e334bb3 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/UncheckedWarningsInsideIncorporationPhase.java @@ -0,0 +1,17 @@ +abstract class Group { + + public Group() { + } + + public T get(Key key) { + return getCategory(key); + } + + public abstract > R getCategory(Key key); +} + +interface Category { +} + +class Key { +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java index 504f48ee0470..21f506801484 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java @@ -982,4 +982,8 @@ public class GenericsHighlighting8Test extends LightDaemonAnalyzerTestCase { public void testLooseInvocationContextForProperPrimitiveTypes() throws Exception { doTest(); } + + public void testUncheckedWarningsInsideIncorporationPhase() throws Exception { + doTest(); + } }