From 291c5cb03bcdd47c9447a86602b96e0256d6c77f Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Mon, 8 Oct 2018 18:32:24 +0200 Subject: [PATCH] unchecked warnings: don't check containing class parameters (IDEA-194678) --- .../UncheckedWarningLocalInspection.java | 2 +- ...arningOnQualifierWithTypeParameterType.java | 18 ++++++++++++++++++ .../daemon/LightAdvHighlightingJdk8Test.java | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting8/UncheckedWarningOnQualifierWithTypeParameterType.java diff --git a/java/java-impl/src/com/intellij/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspection.java index d8507a256339..e1911e776b55 100644 --- a/java/java-impl/src/com/intellij/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspection.java @@ -507,7 +507,7 @@ public class UncheckedWarningLocalInspection extends AbstractBaseJavaLocalInspec final PsiSubstitutor substitutor = resolveResult.getSubstitutor(); if (!PsiUtil.isRawSubstitutor(method, substitutor)) { if (JavaVersionService.getInstance().isAtLeast(place, JavaSdkVersion.JDK_1_8)) { - for (PsiTypeParameter parameter : PsiUtil.typeParametersIterable(method)) { + for (PsiTypeParameter parameter : method.getTypeParameters()) { final PsiClassType[] extendsListTypes = parameter.getExtendsListTypes(); if (extendsListTypes.length > 0) { final PsiType subst = substitutor.substitute(parameter); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting8/UncheckedWarningOnQualifierWithTypeParameterType.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting8/UncheckedWarningOnQualifierWithTypeParameterType.java new file mode 100644 index 000000000000..280dd979ae5c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting8/UncheckedWarningOnQualifierWithTypeParameterType.java @@ -0,0 +1,18 @@ +abstract class Data, T> { + + private static > double displayValue(D data) { + return data.getValue(); + } + + private final double value; + + protected Data(T complement, double value) { + this.value = value; + } + + + public double getValue() { + return value; + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingJdk8Test.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingJdk8Test.java index c004c587fb74..df6a96278396 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingJdk8Test.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightAdvHighlightingJdk8Test.java @@ -44,6 +44,7 @@ public class LightAdvHighlightingJdk8Test extends LightDaemonAnalyzerTestCase { public void testMethodReferences() { doTest(false, true); } public void testUsedMethodsByMethodReferences() { enableInspectionTool(new UnusedDeclarationInspection()); doTest(true, true); } public void testUncheckedWarningForPolyConditional() { enableInspectionTool(new UncheckedWarningLocalInspection()); doTest(true, true); } + public void testUncheckedWarningOnQualifierWithTypeParameterType() { enableInspectionTool(new UncheckedWarningLocalInspection()); doTest(true, true); } public void testLambdaExpressions() { doTest(false, true); } public void testUnsupportedFeatures() { doTest(false, false); } public void testModulesNotSupported() { doTest(false, false); }