diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/style/ArrayCanBeReplacedWithEnumValuesInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/style/ArrayCanBeReplacedWithEnumValuesInspection.java index 69706dd133bd..fce8d797bb43 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/style/ArrayCanBeReplacedWithEnumValuesInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/style/ArrayCanBeReplacedWithEnumValuesInspection.java @@ -6,18 +6,19 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.PsiUtil; +import com.intellij.util.containers.ContainerUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.PsiReplacementUtil; +import com.siyeh.ig.psiutils.ExpressionUtils; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Arrays; import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author okli @@ -101,10 +102,7 @@ public class ArrayCanBeReplacedWithEnumValuesInspection extends BaseInspection { return; } - final List enumValues = Stream.of(initClass.getFields()) - .filter(ev -> ev instanceof PsiEnumConstant) - .map(ev -> ev.getName()) - .collect(Collectors.toList()); + final List enumValues = ContainerUtil.filterIsInstance(Arrays.asList(initClass.getFields()), PsiEnumConstant.class); final PsiExpression[] initializers = expression.getInitializers(); if (enumValues.size() != initializers.length) { @@ -112,11 +110,7 @@ public class ArrayCanBeReplacedWithEnumValuesInspection extends BaseInspection { } for (int i = 0; i < initializers.length; i++) { - if (!(initializers[i] instanceof PsiReferenceExpression && - enumValues.get(i).equals(((PsiReferenceExpression)initializers[i]).getReferenceName()) && - initExprType.equals(initializers[i].getType()))) { - return; - } + if (!ExpressionUtils.isReferenceTo(initializers[i], enumValues.get(i))) return; } final PsiElement parent = expression.getParent(); diff --git a/plugins/InspectionGadgets/src/inspectionDescriptions/ArrayCanBeReplacedWithEnumValues.html b/plugins/InspectionGadgets/src/inspectionDescriptions/ArrayCanBeReplacedWithEnumValues.html index a78495bc6358..4d75c1da29bf 100644 --- a/plugins/InspectionGadgets/src/inspectionDescriptions/ArrayCanBeReplacedWithEnumValues.html +++ b/plugins/InspectionGadgets/src/inspectionDescriptions/ArrayCanBeReplacedWithEnumValues.html @@ -2,5 +2,6 @@ Reports arrays of enum constants which may be replaced with EnumType.values(). +

New in 2019.1

\ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/ErrorInMultiDArray.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/ErrorInMultiDArray.java index 60134a62f89f..06031f2778dd 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/ErrorInMultiDArray.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/ErrorInMultiDArray.java @@ -8,4 +8,4 @@ class ErrorInMultiDArray { public enum TestEnum { ONE, TWO, THREE; -} \ No newline at end of file +}} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.after.java new file mode 100644 index 000000000000..67c3d24bb39f --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.after.java @@ -0,0 +1,9 @@ +class Parentheses { + void test() { + X[] constants = X.values(); + } + + enum X { + A, B, C + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.java new file mode 100644 index 000000000000..193386f816bc --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/style/array_replaced_enum_values/Parentheses.java @@ -0,0 +1,9 @@ +class Parentheses { + void test() { + X[] constants = {(X.A), (X.B), (X.C)}; + } + + enum X { + A, B, C + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/ArrayCanBeReplacedWithEnumValuesFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/ArrayCanBeReplacedWithEnumValuesFixTest.java index 3825d7ea6112..e77f1fbb51b4 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/ArrayCanBeReplacedWithEnumValuesFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/style/ArrayCanBeReplacedWithEnumValuesFixTest.java @@ -27,6 +27,8 @@ public class ArrayCanBeReplacedWithEnumValuesFixTest extends IGQuickFixesTestCas public void testFooInit() {assertQuickfixNotAvailable();} public void testOuterEnumUse() {doTest("TestEnum");} + + public void testParentheses() {doTest("X");}