diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index b85fb167f6e3..ac5ee39dc688 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -2048,6 +2048,11 @@ public class HighlightUtil extends HighlightUtilBase { return null; } + if (expression instanceof PsiJavaCodeReferenceElement && + PsiTreeUtil.getParentOfType(expression, PsiClassObjectAccessExpression.class) != null) { + return null; + } + final HighlightInfo highlightInfo = createMemberReferencedError(resolvedName, expression.getTextRange()); if (expression instanceof PsiReferenceExpression && PsiUtil.isInnerClass(aClass)) { final String referenceName = ((PsiReferenceExpression)expression).getReferenceName(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassObjectLiteralFromSuperExpression.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassObjectLiteralFromSuperExpression.java new file mode 100644 index 000000000000..43d3893c7491 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassObjectLiteralFromSuperExpression.java @@ -0,0 +1,11 @@ +class C { + C(Class c) {} +} + +class A extends C { + A() { + super(B.class); + } + + class B {} +} \ 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 974a3222f119..5617b002158d 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingTest.java @@ -384,6 +384,7 @@ public class LightAdvHighlightingTest extends LightDaemonAnalyzerTestCase { public void testIDEA71645() { doTest(false, false); } public void testIDEA18343() { doTest(false, false); } public void testNewExpressionClass() { doTest(false, false); } + public void testInnerClassObjectLiteralFromSuperExpression() { doTest(false, false); } public void testNoEnclosingInstanceWhenStaticNestedInheritsFromContainingClass() throws Exception { doTest(false, false);