diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/FieldAccessNotGuardedInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/FieldAccessNotGuardedInspection.java index 3886bf9ae28e..248aac974dc9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/FieldAccessNotGuardedInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/concurrencyAnnotations/FieldAccessNotGuardedInspection.java @@ -6,6 +6,7 @@ import com.intellij.codeInsight.daemon.GroupNames; import com.intellij.codeInspection.AbstractBaseJavaLocalInspectionTool; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; import com.intellij.util.IncorrectOperationException; @@ -81,7 +82,7 @@ public class FieldAccessNotGuardedInspection extends AbstractBaseJavaLocalInspec if (guardExpression instanceof PsiThisExpression) { final PsiThisExpression thisExpression = (PsiThisExpression)guardExpression; final PsiClass aClass = getClassFromThisExpression(thisExpression, field); - if (aClass == null || aClass.equals(containingMethod.getContainingClass())) { + if (aClass == null || InheritanceUtil.isInheritorOrSelf(containingMethod.getContainingClass(), aClass, true)) { return; } } diff --git a/java/java-tests/testData/inspection/guarded/fieldAccessNotGuarded.java b/java/java-tests/testData/inspection/guarded/fieldAccessNotGuarded.java index e27a64a540ce..412352f2940c 100644 --- a/java/java-tests/testData/inspection/guarded/fieldAccessNotGuarded.java +++ b/java/java-tests/testData/inspection/guarded/fieldAccessNotGuarded.java @@ -104,3 +104,14 @@ class Example3 private long total = 0; } } + +class Example4 { + @GuardedBy("this") + protected Object field; + + static class Example4Derived extends Example4 { + synchronized void foo() { + Object o = field; + } + } +} \ No newline at end of file