diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MismatchedArrayReadWriteInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MismatchedArrayReadWriteInspection.java index f19cb7f23911..07421cab47ec 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MismatchedArrayReadWriteInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/bugs/MismatchedArrayReadWriteInspection.java @@ -256,8 +256,9 @@ public class MismatchedArrayReadWriteInspection extends BaseInspection { } if (PsiUtil.isAccessedForWriting(arrayAccessExpression)) { myWritten = true; + // compound writes like += are not considered as reads, because result result goes to the same array as well } - if (PsiUtil.isAccessedForReading(arrayAccessExpression) && !goesToSameArray(arrayAccessExpression)) { + else if (PsiUtil.isAccessedForReading(arrayAccessExpression) && !goesToSameArray(arrayAccessExpression)) { myRead = true; } } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/mismatched_array_read_write/MismatchedArrayReadWrite.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/mismatched_array_read_write/MismatchedArrayReadWrite.java index 97f63152270a..73f98b15cc65 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/mismatched_array_read_write/MismatchedArrayReadWrite.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/bugs/mismatched_array_read_write/MismatchedArrayReadWrite.java @@ -109,9 +109,10 @@ public class MismatchedArrayReadWrite { } void reuseSelf() { - int[] arr = new int[10]; + int[] arr = new int[10]; for(int i=0; iarray = new int[2][2]; + array[0][1]++; + } + + private void testStuff2() { // IDEA-47651 int[][] array = new int[2][2]; array[0][1]++; + System.out.println(array[0][1]); } void foo1() {