From 160833314af9be38d8d68f0ef1c16871e7e0276f Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 8 May 2013 16:03:27 +0200 Subject: [PATCH] do not warn about reference to super member before call to super (IDEA-57259) --- .../codeInsight/daemon/impl/analysis/HighlightUtil.java | 2 +- .../genericsHighlighting/IDEA57259.java | 8 ++++++++ .../codeInsight/daemon/GenericsHighlightingTest.java | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57259.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 781eeb32c4be..eb75a700f544 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -2011,7 +2011,7 @@ public class HighlightUtil extends HighlightUtilBase { @Nullable public static HighlightInfo checkImplicitThisReferenceBeforeSuper(@NotNull PsiClass aClass) { if (JavaVersionService.getInstance().isAtLeast(aClass, JavaSdkVersion.JDK_1_7)) return null; - if (aClass instanceof PsiAnonymousClass) return null; + if (aClass instanceof PsiAnonymousClass || aClass instanceof PsiTypeParameter) return null; PsiClass superClass = aClass.getSuperClass(); if (superClass == null || !PsiUtil.isInnerClass(superClass)) return null; PsiClass outerClass = superClass.getContainingClass(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57259.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57259.java new file mode 100644 index 000000000000..fbf2bd11bdff --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57259.java @@ -0,0 +1,8 @@ +class A { + class B extends A {} +} + +class C { + class D extends C {} + .D> void foo(){} +} \ No newline at end of file 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 6d0bc120daf6..ca4c17a331f4 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -235,6 +235,7 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA20573() throws Exception { doTest5(false);} public void testIDEA20244() throws Exception { doTest5(false);} public void testIDEA22005() throws Exception { doTest5(false);} + public void testIDEA57259() throws Exception { doTest5(false);} public void testInheritedWithDifferentArgsInTypeParams() throws Exception { doTest5(false);} public void testIllegalForwardReferenceInTypeParameterDefinition() throws Exception { doTest5(false);}