From 34408fba3dd57e7ab3acf94fce4e4902c2c6bd18 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 31 Dec 2015 17:11:31 +0100 Subject: [PATCH] changes for IDEA-CR-7640 --- .../AtomicFieldUpdaterIssuesInspection.java | 6 +++--- .../AtomicFieldUpdaterIssues.html | 4 ---- .../AtomicFieldUpdaterIssuesInspectionTest.java | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspection.java index fa07adabb4dd..705b5c816689 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspection.java @@ -21,6 +21,7 @@ import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.ClassUtils; import com.siyeh.ig.psiutils.ExpressionUtils; +import com.siyeh.ig.psiutils.ParenthesesUtils; import com.siyeh.ig.psiutils.TypeUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; @@ -40,8 +41,7 @@ public class AtomicFieldUpdaterIssuesInspection extends BaseInspection { @NotNull @Override protected String buildErrorString(Object... infos) { - final String message = (String)infos[0]; - return message; + return (String)infos[0]; } @Override @@ -70,7 +70,7 @@ public class AtomicFieldUpdaterIssuesInspection extends BaseInspection { return; } final String fieldName = (String)value; - final PsiExpression firstArgument = arguments[0]; + final PsiExpression firstArgument = ParenthesesUtils.stripParentheses(arguments[0]); if (!(firstArgument instanceof PsiClassObjectAccessExpression)) { return; } diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/AtomicFieldUpdaterIssues.html b/plugins/InspectionGadgets/src/inspectionDescriptions/AtomicFieldUpdaterIssues.html index cb8e1ba516fd..7e493daaf478 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/AtomicFieldUpdaterIssues.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/AtomicFieldUpdaterIssues.html @@ -1,7 +1,5 @@ - - Reports issues on fields of type java.util.concurrent.atomic.AtomicLongFieldUpdater, java.util.concurrent.atomic.AtomicIntegerFieldUpdater or java.util.concurrent.atomic.AtomicReferenceFieldUpdater. The issues reported are identical to the runtime problems that can happen with atomic field updaters: @@ -11,6 +9,4 @@ specified field not found, specified field not accessible, specified field of th

New in 16 - - \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspectionTest.java index 88b74be2444f..230a10cfa147 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/threading/AtomicFieldUpdaterIssuesInspectionTest.java @@ -38,7 +38,7 @@ public class AtomicFieldUpdaterIssuesInspectionTest extends LightInspectionTestC "class A {" + " private static volatile int value = 0;" + " private static final AtomicIntegerFieldUpdater updater = " + - " AtomicIntegerFieldUpdater.newUpdater(A.class, /*Field 'value' has 'static' modifier*/\"value\"/**/);" + + " AtomicIntegerFieldUpdater.newUpdater((A.class), /*Field 'value' has 'static' modifier*/(\"value\")/**/);" + "}"); } @@ -100,6 +100,20 @@ public class AtomicFieldUpdaterIssuesInspectionTest extends LightInspectionTestC "}"); } + /** + * private fields are not accessible at runtime even from inner classes. + */ + public void testNotAccessible2() { + doTest("import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;" + + "class Z {" + + " private volatile int value = 0;" + + " static class A {\n" + + " private static final AtomicIntegerFieldUpdater updater = \n" + + " AtomicIntegerFieldUpdater.newUpdater(Z.class, /*'private' field 'value' is not accessible from here*/\"value\"/**/);\n" + + " }" + + "}"); + } + @Nullable @Override protected InspectionProfileEntry getInspection() {