From f1f7357ee0cc01204faa0195745a4f9531929b9d Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 3 May 2013 17:18:26 +0200 Subject: [PATCH] ignore implicit this reference before super call for java 7 --- .../daemon/impl/analysis/HighlightUtil.java | 8 +++++++- ...reImplicitThisReferenceBeforeSuperSinceJdk7.java | 4 ++++ .../daemon/LightAdvHighlightingTest.java | 13 ++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/IgnoreImplicitThisReferenceBeforeSuperSinceJdk7.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 d3acfb4c029d..af7fe4da48a9 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 @@ -32,6 +32,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.projectRoots.JavaSdkVersion; +import com.intellij.openapi.projectRoots.JavaVersionService; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Condition; @@ -52,7 +54,10 @@ import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.templateLanguages.OuterLanguageElement; import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.*; -import com.intellij.util.*; +import com.intellij.util.ArrayUtil; +import com.intellij.util.ArrayUtilRt; +import com.intellij.util.Function; +import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; import com.intellij.xml.util.XmlStringUtil; @@ -2004,6 +2009,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; PsiClass superClass = aClass.getSuperClass(); if (superClass == null || !PsiUtil.isInnerClass(superClass)) return null; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/IgnoreImplicitThisReferenceBeforeSuperSinceJdk7.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/IgnoreImplicitThisReferenceBeforeSuperSinceJdk7.java new file mode 100644 index 000000000000..2dc8d2cbf1ea --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/IgnoreImplicitThisReferenceBeforeSuperSinceJdk7.java @@ -0,0 +1,4 @@ +class Test { + class Test1 extends Test {} + class Test2 extends Test1 {} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java index 8c23e5cd0e4c..b57321456d94 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java @@ -38,6 +38,9 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.fileTypes.StdFileTypes; +import com.intellij.openapi.projectRoots.JavaSdkVersion; +import com.intellij.openapi.projectRoots.JavaVersionService; +import com.intellij.openapi.projectRoots.JavaVersionServiceImpl; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -180,7 +183,15 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase { public void testXXX() { doTest(false, false); } public void testUnused() { doTest(true, false); } public void testQualifierBeforeClassName() { doTest(false, false); } - public void testQualifiedSuper() { doTest(false, false); } + public void testQualifiedSuper() { + ((JavaVersionServiceImpl)JavaVersionService.getInstance()).setTestVersion(JavaSdkVersion.JDK_1_6, myTestRootDisposable); + doTest(false, false); + } + + public void testIgnoreImplicitThisReferenceBeforeSuperSinceJdk7() throws Exception { + doTest(false, false); + } + public void testCastFromVoid() { doTest(false, false); } public void testCatchUnknownMethod() { doTest(false, false); } public void testIDEADEV8822() { doTest(false, false); }