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);
};