mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
guardedBy: accept inherited instance (IDEA-180433)
This commit is contained in:
+2
-1
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user