From 815dda57fb99b9a07596020e84c1d95dfb0170d0 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 14 Jan 2019 10:04:23 +0700 Subject: [PATCH] MismatchedArrayReadWrite: do not consider compound assignments/increments as reads (IDEA-CR-41955) --- .../ig/bugs/MismatchedArrayReadWriteInspection.java | 3 ++- .../MismatchedArrayReadWrite.java | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) 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() {