diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java index 632a3b62949e..c21b8724435b 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspection.java @@ -87,7 +87,7 @@ class AccessCanBeTightenedInspection extends AbstractBaseJavaLocalInspectionTool } private void checkMember(@NotNull final PsiMember member) { - if (!myVisibilityInspection.SUGGEST_FOR_CONSTANTS && PsiUtil.isConstantField(member)) { + if (!myVisibilityInspection.SUGGEST_FOR_CONSTANTS && isConstantField(member)) { return; } @@ -291,6 +291,13 @@ class AccessCanBeTightenedInspection extends AbstractBaseJavaLocalInspectionTool return memberClass.getContainingClass() != null || memberClass instanceof PsiAnonymousClass; } + private static boolean isConstantField(PsiMember member) { + return member instanceof PsiField && + member.hasModifierProperty(PsiModifier.STATIC) && + member.hasModifierProperty(PsiModifier.FINAL) && + ((PsiField)member).hasInitializer(); + } + private static boolean isInReferenceList(@Nullable PsiElement list, @NotNull final PsiMember member) { if (list == null) return false; final PsiManager psiManager = member.getManager(); diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java index d1c5548613f4..4af68e97ca9a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/visibility/VisibilityInspection.java @@ -614,9 +614,10 @@ public class VisibilityInspection extends GlobalJavaBatchInspectionTool { node.addContent(new Element("disabledExtension").setAttribute("id", entry.getKey())); } } - for (Element child : new ArrayList<>(node.getChildren())) { + for (Element child : node.getChildren()) { if ("SUGGEST_FOR_CONSTANTS".equals(child.getAttributeValue("name")) && "true".equals(child.getAttributeValue("value"))) { node.removeContent(child); + break; } } } diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java index 83bb8e6e7376..4198f7f76f45 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java @@ -23,7 +23,6 @@ import com.intellij.openapi.ui.Messages; import com.intellij.psi.*; import com.intellij.psi.presentation.java.SymbolPresentationUtil; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.psi.util.PsiUtil; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.PackageWrapper; import com.intellij.refactoring.RefactorJBundle; @@ -272,7 +271,7 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi protected Object getAbstractColumnValue(MemberInfo memberInfo) { if (isExtractAsEnum()) { final PsiMember member = memberInfo.getMember(); - if (PsiUtil.isConstantField(member)) { + if (isConstantField(member)) { return Boolean.valueOf(enumConstants.contains(memberInfo)); } } @@ -284,7 +283,7 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi final MemberInfo info = memberInfo.get(rowIndex); if (info.isChecked()) { final PsiMember member = info.getMember(); - if (PsiUtil.isConstantField(member)) { + if (isConstantField(member)) { if (enumConstants.isEmpty()) return true; final MemberInfo currentEnumConstant = enumConstants.get(0); if (((PsiField)currentEnumConstant.getMember()).getType().equals(((PsiField)member).getType())) return true; @@ -381,14 +380,14 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi break; } } - if (selected != null && PsiUtil.isConstantField(selected.getMember())) { + if (selected != null && isConstantField(selected.getMember())) { enumConstants.add(selected); selected.setToAbstract(true); } } for (MemberInfo info : memberInfo) { final PsiMember member = info.getMember(); - if (PsiUtil.isConstantField(member)) { + if (isConstantField(member)) { if (enumConstants.isEmpty() || ((PsiField)enumConstants.get(0).getMember()).getType().equals(((PsiField)member).getType())) { if (!enumConstants.contains(info)) enumConstants.add(info); info.setToAbstract(true); @@ -397,6 +396,13 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi } } + private static boolean isConstantField(PsiMember member) { + return member instanceof PsiField && + member.hasModifierProperty(PsiModifier.STATIC) && + // member.hasModifierProperty(PsiModifier.FINAL) && + ((PsiField)member).hasInitializer(); + } + @Override public JComponent getPreferredFocusedComponent() { return classNameField; diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java index 0de027ce307e..6c0b646df8e9 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java @@ -677,19 +677,6 @@ public final class PsiUtil extends PsiUtilCore { && isConstantExpression(field.getInitializer()); } - /** - * Checks whether the passed {@link PsiElement} is a constant field (static final field with initializer). - */ - public static boolean isConstantField(PsiElement element) { - if (!(element instanceof PsiField)) { - return false; - } - PsiField field = (PsiField)element; - return field.hasModifierProperty(PsiModifier.STATIC) && - field.hasModifierProperty(PsiModifier.FINAL) && - field.hasInitializer(); - } - public static boolean allMethodsHaveSameSignature(@NotNull PsiMethod[] methods) { if (methods.length == 0) return true; final MethodSignature methodSignature = methods[0].getSignature(PsiSubstitutor.EMPTY); diff --git a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java index 5db73db3fa28..b3480f666078 100644 --- a/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/intellij/codeInspection/visibility/AccessCanBeTightenedInspectionTest.java @@ -34,13 +34,19 @@ import org.jetbrains.annotations.NotNull; @SuppressWarnings("WeakerAccess") public class AccessCanBeTightenedInspectionTest extends LightInspectionTestCase { - private VisibilityInspection myVisibilityInspection = createTool(); + private VisibilityInspection myVisibilityInspection; @Override protected LocalInspectionTool getInspection() { return myVisibilityInspection.getSharedLocalInspectionTool(); } + @Override + protected void setUp() throws Exception { + myVisibilityInspection = createTool(); + super.setUp(); + } + @Override protected void tearDown() throws Exception { myVisibilityInspection = null;