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 4548378a49d0..170dbec1e133 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 @@ -349,7 +349,7 @@ public class HighlightClassUtil { return null; } PsiClass aClass = (PsiClass)keyword.getParent(); - if (PsiUtilCore.hasErrorElementChild(aClass)) return null; + if (PsiUtilCore.hasErrorElementChild(aClass) || (aClass.getQualifiedName() == null && !aClass.isInterface())) return null; // highlight 'static' keyword if any, or class or interface if not PsiElement context = null; PsiModifierList modifierList = aClass.getModifierList(); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 99483109d7c4..b18dac26941c 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -824,7 +824,7 @@ public class HighlightUtil { } else if (PsiModifier.STATIC.equals(modifier) || PsiModifier.PRIVATE.equals(modifier) || PsiModifier.PROTECTED.equals(modifier) || PsiModifier.PACKAGE_LOCAL.equals(modifier)) { - isAllowed = modifierOwnerParent instanceof PsiClass; + isAllowed = modifierOwnerParent instanceof PsiClass && ((PsiClass)modifierOwnerParent).getQualifiedName() != null; } if (aClass.isEnum()) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/ModifierAllowed.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/ModifierAllowed.java index 99b79745b48e..d9012650d71f 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/ModifierAllowed.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/ModifierAllowed.java @@ -66,3 +66,11 @@ interface i3 { transient int m2() { return 0; } synchronized int m3() { return 0; } } + +class LocalClassWithInner { + void foo () { + class A { + private class B {} + } + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticInInner.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticInInner.java index 14dc7c34bc6f..a8c82f35d016 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticInInner.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/StaticInInner.java @@ -48,7 +48,7 @@ public class a { static final int f2 = x instanceof Integer ? 1 : 0; - static + static class a_ic_c2 {} static @@ -75,7 +75,7 @@ public class a { static final int f2 = x instanceof Integer ? 1 : 0; - static + static class a_ic_c2 {} static diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java index d724dc5e0efa..e113157c5841 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Enum.java @@ -115,7 +115,7 @@ class X extends E enum StaticInEnumConstantInitializer { AN { - static class s { + static class s { } private static final String t = String.valueOf(1); };