diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiManager.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiManager.java
index 2615fe71a613..0f19484cbf20 100644
--- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiManager.java
+++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyPsiManager.java
@@ -10,6 +10,7 @@ import com.intellij.openapi.util.RecursionManager;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiManagerEx;
import com.intellij.psi.search.GlobalSearchScope;
+import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ConcurrencyUtil;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
@@ -81,19 +82,14 @@ public class GroovyPsiManager {
}
public boolean isCompileStatic(@NotNull PsiMember member) {
- Boolean aBoolean = myCompileStatic.get(member);
- if (aBoolean == null) {
- aBoolean = ConcurrencyUtil.cacheOrGet(myCompileStatic, member, isCompileStaticInner(member));
- }
- return aBoolean;
+ return myCompileStatic.computeIfAbsent(member, this::isCompileStaticInner);
}
private boolean isCompileStaticInner(@NotNull PsiMember member) {
PsiAnnotation annotation = getCompileStaticAnnotation(member);
if (annotation != null) return checkForPass(annotation);
- PsiClass aClass = member.getContainingClass();
- if (aClass != null) return isCompileStatic(aClass);
- return false;
+ PsiMember enclosingMember = PsiTreeUtil.getParentOfType(member, PsiMember.class, true);
+ return enclosingMember != null && isCompileStatic(enclosingMember);
}
@Nullable
diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy
index e2863c2d1469..72410012303d 100644
--- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy
+++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy
@@ -577,6 +577,11 @@ print abc
@CompileStatic
def bar() {
print abc
+ new Object() {
+ def baz() {
+ print(unknown)
+ }
+ }
}
}
''', true, false, false, GrUnresolvedAccessInspection)