diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightNamesUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightNamesUtil.java
index b6b136530032..5e8fb9d20af6 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightNamesUtil.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightNamesUtil.java
@@ -62,8 +62,13 @@ public class HighlightNamesUtil {
if (!isDeclaration) {
if (isCalledOnThis(elementToHighlight)) {
- PsiClass enclosingClass = PsiTreeUtil.getParentOfType(elementToHighlight, PsiClass.class);
- isInherited = enclosingClass != null && enclosingClass.isInheritor(method.getContainingClass(), true);
+ final PsiClass containingClass = method.getContainingClass();
+ PsiClass enclosingClass = containingClass == null ? null : PsiTreeUtil.getParentOfType(elementToHighlight, PsiClass.class);
+ while (enclosingClass != null) {
+ isInherited = enclosingClass.isInheritor(containingClass, true);
+ if (isInherited) break;
+ enclosingClass = PsiTreeUtil.getParentOfType(enclosingClass, PsiClass.class, true);
+ }
}
}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NamesHighlighting.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NamesHighlighting.java
index a92aefa049be..e25fa4ac277e 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NamesHighlighting.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/NamesHighlighting.java
@@ -59,4 +59,38 @@ class NoCtrClass {
class Generic<TT extends Runnable> {
TT field;
+}
+
+class InheritedSymbolNames {
+
+ private static class A {
+ public String getName() {
+ return "classA";
+ }
+ }
+
+ private static class B extends A {
+ {
+ new java.lang.Runnable() {
+ public void run() {
+ getName();
+ }
+ };
+ getName();
+ }
+ }
+
+ private static class C extends A {
+ {
+ new java.lang.Runnable() {
+ public void run() {
+ getName();
+ }
+ };
+ getName();
+ }
+ public String getName() {
+ return "classC";
+ }
+ }
}
\ No newline at end of file