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); }