diff --git a/java/java-tests/testData/inspection/explicitArrayFilling/beforeMultiArray.java b/java/java-tests/testData/inspection/explicitArrayFilling/beforeMultiArray.java new file mode 100644 index 000000000000..73cf4a1a893c --- /dev/null +++ b/java/java-tests/testData/inspection/explicitArrayFilling/beforeMultiArray.java @@ -0,0 +1,10 @@ +// "Replace loop with 'Arrays.fill()' method call" "false" +package pack; + +public class TableWrapper { + + public static double[][] diag(final int n, final double value) { + final double[][] test = new double[n][n]; + for (int i = 0; i < n; ++i) test[i][i] = value; + return test; + }} \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/IndexedContainer.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/IndexedContainer.java index ab0beb953b4a..e53884d2e023 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/IndexedContainer.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/IndexedContainer.java @@ -121,26 +121,27 @@ public abstract class IndexedContainer { public static IndexedContainer arrayContainerWithBound(@NotNull PsiArrayAccessExpression arrayAccessExpression, @NotNull PsiExpression bound) { PsiExpression arrayExpression = arrayAccessExpression.getArrayExpression(); - if (arrayExpression instanceof PsiReferenceExpression reference && - reference.resolve() instanceof PsiVariable arrayVariable) { - PsiExpression initializer = arrayVariable.getInitializer(); - if (!(initializer instanceof PsiNewExpression newExpression)) { - return null; - } - PsiExpression[] dimensions = newExpression.getArrayDimensions(); - if (dimensions.length != 1) { - return null; - } - PsiExpression dimension = dimensions[0]; - PsiVariable dimensionVariable = ExpressionUtils.resolveVariable(dimension); - PsiVariable boundVariable = ExpressionUtils.resolveVariable(bound); - if (dimensionVariable == null || boundVariable == null || !dimensionVariable.isEquivalentTo(boundVariable)) { - return null; - } - if ((VariableAccessUtils.variableIsAssigned(dimensionVariable)) || - (VariableAccessUtils.variableIsAssigned(arrayVariable))) { - return null; - } + if (!(arrayExpression instanceof PsiReferenceExpression reference) || + !(reference.resolve() instanceof PsiVariable arrayVariable)) { + return null; + } + PsiExpression initializer = arrayVariable.getInitializer(); + if (!(initializer instanceof PsiNewExpression newExpression)) { + return null; + } + PsiExpression[] dimensions = newExpression.getArrayDimensions(); + if (dimensions.length != 1) { + return null; + } + PsiExpression dimension = dimensions[0]; + PsiVariable dimensionVariable = ExpressionUtils.resolveVariable(dimension); + PsiVariable boundVariable = ExpressionUtils.resolveVariable(bound); + if (dimensionVariable == null || boundVariable == null || !dimensionVariable.isEquivalentTo(boundVariable)) { + return null; + } + if ((VariableAccessUtils.variableIsAssigned(dimensionVariable)) || + (VariableAccessUtils.variableIsAssigned(arrayVariable))) { + return null; } return new ArrayIndexedContainer(arrayExpression); }