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