diff --git a/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/ExpressionChecker.java b/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/ExpressionChecker.java index cb646cd69dbf..81bd5adc0de0 100644 --- a/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/ExpressionChecker.java +++ b/java/codeserver/highlighting/src/com/intellij/java/codeserver/highlighting/ExpressionChecker.java @@ -1617,10 +1617,10 @@ final class ExpressionChecker { } if (!(expression instanceof PsiThisExpression) && !(expression instanceof PsiSuperExpression) || ((PsiQualifiedExpression)expression).getQualifier() == null) { - PsiClass expressionClass = PsiTreeUtil.getParentOfType(expression, PsiClass.class, true); + PsiClass expressionClass = PsiUtil.getContainingClass(expression); while (expressionClass != null && parentClass != expressionClass) { if (InheritanceUtil.isInheritorOrSelf(expressionClass, referencedClass, true)) return; - expressionClass = PsiTreeUtil.getParentOfType(expressionClass, PsiClass.class, true); + expressionClass = PsiUtil.getContainingClass(expressionClass); } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FlexibleConstructorBodies.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FlexibleConstructorBodies.java index e44e5ceb4fee..51c4728ae84d 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FlexibleConstructorBodies.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/FlexibleConstructorBodies.java @@ -194,4 +194,21 @@ class InitializeField { InitializeField.this.i = 1; super(); } +} +class Person { + + Person(Other other) { + } + + Person() { + Other o = new Other(hashCode()) {}; + this(o); + } + + Person(int i) { + this(new Other(hashCode())); + } +} +class Other { + Other(int x) {} } \ No newline at end of file