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() {