Recreate inspection for each test in AccessCanBeTightenedInspectionTest, move isConstantField() from PsiUtil to AccessCanBeTightenedInspection

This commit is contained in:
Yaroslav Pankratyev
2017-11-03 10:07:56 +01:00
parent e4b4cbdce0
commit 087424e42f
5 changed files with 28 additions and 21 deletions
@@ -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();
@@ -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;
}
}
}
@@ -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;
@@ -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);
@@ -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;