diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index a28be95d2166..08e9dc352a3f 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -689,8 +689,15 @@ public class HighlightClassUtil { return null; } final PsiClass aClass = (PsiClass)grand; + final PsiClass containerClass; if (aClass instanceof PsiTypeParameter) { - return null; + final PsiTypeParameterListOwner owner = ((PsiTypeParameter)aClass).getOwner(); + if (!(owner instanceof PsiClass)) { + return null; + } + containerClass = (PsiClass)owner; + } else { + containerClass = aClass; } if (aClass.getExtendsList() != parent && aClass.getImplementsList() != parent) { return null; @@ -713,7 +720,7 @@ public class HighlightClassUtil { if (resolve instanceof PsiClass) { final PsiClass base = (PsiClass)resolve; final PsiClass baseClass = base.getContainingClass(); - if (baseClass != null && base.hasModifierProperty(PsiModifier.PRIVATE) && !PsiTreeUtil.isAncestor(baseClass, aClass, true)) { + if (baseClass != null && base.hasModifierProperty(PsiModifier.PRIVATE) && baseClass == containerClass) { String description = JavaErrorMessages.message("private.symbol", HighlightUtil.formatClass(base), HighlightUtil.formatClass(baseClass)); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/InnerInTypeArguments.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/InnerInTypeArguments.java new file mode 100644 index 000000000000..594fee242c64 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/InnerInTypeArguments.java @@ -0,0 +1,3 @@ +class AA.B> { + private class B {} +} diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java index acb08fd82d81..2bac9bb26aba 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/LightAdvHighlightingJdk7Test.java @@ -87,6 +87,7 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase { public void testDiamondNeg14() throws Exception { doTest(false, false); } public void testDiamondMisc() throws Exception { doTest(false, false); } public void testHighlightInaccessibleFromClassModifierList() throws Exception { doTest(false, false); } + public void testInnerInTypeArguments() throws Exception { doTest(false, false); } public void testDynamicallyAddIgnoredAnnotations() throws Exception { ExtensionPoint point = Extensions.getRootArea().getExtensionPoint(ExtensionPoints.DEAD_CODE_TOOL);