diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/untypedUnresolvedAccess/GrUnresolvedAccessChecker.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/untypedUnresolvedAccess/GrUnresolvedAccessChecker.java index 8bec1f1169f2..2978b652f544 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/untypedUnresolvedAccess/GrUnresolvedAccessChecker.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/untypedUnresolvedAccess/GrUnresolvedAccessChecker.java @@ -146,7 +146,7 @@ public class GrUnresolvedAccessChecker { if (refElement.getParent() instanceof GrNewExpression) { - boolean inStaticContext = GrStaticChecker.isInStaticContext(refElement, null); + boolean inStaticContext = GrStaticChecker.isInStaticContext(refElement); if (!inStaticContext && GrUnresolvedAccessInspection.isSuppressed(refElement)) return null; diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrStaticChecker.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrStaticChecker.java index 0c11ab53d551..c9d17cb3afb3 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrStaticChecker.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrStaticChecker.java @@ -191,16 +191,16 @@ public class GrStaticChecker { public static boolean isInStaticContext(@NotNull PsiElement place) { PsiClass targetClass = null; if (place instanceof GrReferenceExpression) { - PsiElement qualifier = ((GrReferenceExpression)place).getQualifier(); - if (PsiUtil.isThisReference(place) && qualifier instanceof GrReferenceExpression) { - targetClass = (PsiClass)((GrReferenceExpression)qualifier).resolve(); + PsiElement qualifier = ((GrQualifiedReference)place).getQualifier(); + if (PsiUtil.isThisReference(place) && qualifier instanceof GrQualifiedReference) { + targetClass = (PsiClass)((GrQualifiedReference)qualifier).resolve(); } } return isInStaticContext(place, targetClass); } public static boolean isInStaticContext(@NotNull PsiElement place, @Nullable PsiClass targetClass) { - if (place instanceof GrQualifiedReference) { + if (place instanceof GrReferenceExpression) { GrQualifiedReference reference = (GrQualifiedReference)place; PsiElement qualifier = reference.getQualifier(); if (qualifier != null && !PsiUtil.isThisOrSuperRef(reference)) { @@ -210,7 +210,7 @@ public class GrStaticChecker { else if (PsiUtil.isThisReference(qualifier)) { //instance 'this' already is processed. So it static 'this' return true; } - return qualifier instanceof GrReferenceExpression && ((GrReferenceExpression)qualifier).resolve() instanceof PsiClass; + return qualifier instanceof GrQualifiedReference && ((GrQualifiedReference)qualifier).resolve() instanceof PsiClass; } @@ -221,6 +221,7 @@ public class GrStaticChecker { PsiElement run = place; while (run != null && run != targetClass) { if (targetClass == null && run instanceof PsiClass) return false; + if (run instanceof GrClosableBlock) return false; if (run instanceof PsiModifierListOwner && ((PsiModifierListOwner)run).hasModifierProperty(PsiModifier.STATIC)) return true; run = run.getParent(); } @@ -228,7 +229,7 @@ public class GrStaticChecker { } public static boolean isPropertyAccessInStaticMethod(@NotNull GrReferenceExpression referenceExpression) { - return isInStaticContext(referenceExpression, null) && + return isInStaticContext(referenceExpression) && !(referenceExpression.getParent() instanceof GrMethodCall) && referenceExpression.getQualifier() == null; }