From ee964486c99e2613144fd911f3e8144a03d337ce Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 3 May 2013 16:50:36 +0200 Subject: [PATCH] check if current class doesn't have access to siblings (IDEA-19200) --- .../daemon/impl/analysis/HighlightClassUtil.java | 2 +- ...stanceWhenStaticNestedInheritsFromContainingClass.java | 8 ++++++++ .../codeInsight/daemon/LightAdvHighlightingTest.java | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass.java diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index 2487c3d680ab..58e2acceefbe 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -778,7 +778,7 @@ public class HighlightClassUtil { if (!PsiUtil.isInnerClass(base)) return; if (resolve == resolved && baseClass != null && (!PsiTreeUtil.isAncestor(baseClass, extendRef, true) || aClass.hasModifierProperty(PsiModifier.STATIC)) && - !hasEnclosingInstanceInScope(baseClass, extendRef, true, true) && !qualifiedNewCalledInConstructors(aClass, baseClass)) { + !hasEnclosingInstanceInScope(baseClass, extendRef, !aClass.hasModifierProperty(PsiModifier.STATIC), true) && !qualifiedNewCalledInConstructors(aClass, baseClass)) { String description = JavaErrorMessages.message("no.enclosing.instance.in.scope", HighlightUtil.formatClass(baseClass)); infos[0] = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(extendRef).descriptionAndTooltip(description).create(); } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass.java new file mode 100644 index 000000000000..3c38d3c19096 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass.java @@ -0,0 +1,8 @@ +class Test { + class Test1 extends Test {} + static class Test2 extends Test1 {} + + + static class Test11 extends Test {} + static class Test21 extends Test11 {} +} \ 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 4d00c8022de3..8c23e5cd0e4c 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java @@ -365,6 +365,10 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA60875() { doTest(false, false); } public void testIDEA71645() { doTest(false, false); } + public void testNoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass() throws Exception { + doTest(false, false); + } + public void testStaticMethodCalls() { doTestFile(BASE_PATH + "/" + getTestName(false) + ".java").checkSymbolNames().test(); }