diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index 710cb0efc6cc..6552e5aa2c7c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -784,7 +784,8 @@ public class HighlightClassUtil { if (!PsiUtil.isInnerClass(base)) return; if (resolve == resolved && baseClass != null && (!PsiTreeUtil.isAncestor(baseClass, extendRef, true) || aClass.hasModifierProperty(PsiModifier.STATIC)) && - !InheritanceUtil.hasEnclosingInstanceInScope(baseClass, extendRef, !aClass.hasModifierProperty(PsiModifier.STATIC), true) && !qualifiedNewCalledInConstructors(aClass)) { + !InheritanceUtil.hasEnclosingInstanceInScope(baseClass, extendRef, PsiUtil.isInnerClass(aClass) && !aClass.hasModifierProperty(PsiModifier.STATIC), true) && + !qualifiedNewCalledInConstructors(aClass)) { 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/genericsHighlighting/EnclosingRefInTopLevelClassExtendingInnerWhichExtendsItsOuter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnclosingRefInTopLevelClassExtendingInnerWhichExtendsItsOuter.java new file mode 100644 index 000000000000..27cfe3cb7f1f --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/EnclosingRefInTopLevelClassExtendingInnerWhichExtendsItsOuter.java @@ -0,0 +1,5 @@ +class Outer { + class Inner extends Outer {} +} + +class Impl extends Outer.Inner {} \ 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 88b9e3971fdd..228b846b0aa2 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -630,4 +630,8 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { public void testUncheckedWarningWhenCastingFromCapturedWildcard() throws Exception { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_8, true); } + + public void testEnclosingRefInTopLevelClassExtendingInnerWhichExtendsItsOuter() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_8, true); + } }