diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java index 5ff8a99a631d..69ca8fb6af0c 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java @@ -26,6 +26,7 @@ import com.intellij.psi.scope.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.SmartList; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -227,7 +228,13 @@ public class ClassResolverProcessor extends BaseScopeProcessor implements NameHi myHasInaccessibleCandidate |= !accessible; myCandidates.add(new ClassCandidateInfo(aClass, state.get(PsiSubstitutor.KEY), !accessible, myCurrentFileContext)); myResult = null; - if (!accessible || aClass.hasModifierProperty(PsiModifier.PRIVATE)) return true; + if (!accessible) return true; + if (aClass.hasModifierProperty(PsiModifier.PRIVATE)) { + final PsiClass containingPlaceClass = PsiTreeUtil.getParentOfType(myPlace, PsiClass.class, false); + if (containingPlaceClass != null && !PsiTreeUtil.isAncestor(containingPlaceClass, aClass, true)){ + return true; + } + } return myCurrentFileContext instanceof PsiImportStatementBase; } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassesShadowing.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassesShadowing.java index 825d9d62f4cf..2922998974cd 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassesShadowing.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/InnerClassesShadowing.java @@ -68,3 +68,16 @@ class C extends D implements A interface F2 extends A.B1 { } } + + +class AO {} +class BAO { + AO bar = new AO(); + { + bar.foo(); + } + private class AO { + void foo(){} + } + +} \ No newline at end of file