From 66bcae147fdf657eafae507b5201003363c72d33 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 10 May 2021 09:58:02 +0200 Subject: [PATCH] java: while -> foreach with empty loop (IDEA-268952) GitOrigin-RevId: a569bb1c7046b97af445919e56abd5d2a46807cc --- .../com/siyeh/ig/migration/ForCanBeForeachInspection.java | 4 +++- .../migration/while_can_be_foreach/EmptyLoop.after.java | 7 +++++++ .../igfixes/migration/while_can_be_foreach/EmptyLoop.java | 8 ++++++++ .../ig/fixes/migration/WhileCanBeForeachFixTest.java | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.after.java create mode 100644 plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.java diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java index c1c122f35b9f..ecf744c9ce1e 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/migration/ForCanBeForeachInspection.java @@ -490,7 +490,9 @@ public class ForCanBeForeachInspection extends BaseInspection { PsiVariable iterator, PsiType contentType, PsiElement childToSkip, CommentTracker commentTracker, StringBuilder out) { if (isIteratorNext(element, iterator, contentType)) { - out.append(contentVariableName); + if (!(element.getParent() instanceof PsiExpressionStatement)) { + out.append(contentVariableName); + } } else { final PsiElement[] children = element.getChildren(); diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.after.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.after.java new file mode 100644 index 000000000000..2d4adf0dba3a --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.after.java @@ -0,0 +1,7 @@ +import java.util.Iterator; + +class MyTest { + public static void foo(Iterable bar) { + for (Object o : bar) ; + } +} diff --git a/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.java b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.java new file mode 100644 index 000000000000..f4088be443dd --- /dev/null +++ b/plugins/InspectionGadgets/test/com/siyeh/igfixes/migration/while_can_be_foreach/EmptyLoop.java @@ -0,0 +1,8 @@ +import java.util.Iterator; + +class MyTest { + public static void foo(Iterable bar) { + Iterator it = bar.iterator(); + while (it.hasNext()) it.next(); + } +} diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/WhileCanBeForeachFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/WhileCanBeForeachFixTest.java index 77f72753b207..31fa7ec8a474 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/WhileCanBeForeachFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/WhileCanBeForeachFixTest.java @@ -24,6 +24,7 @@ public class WhileCanBeForeachFixTest extends IGQuickFixesTestCase { public void testRawIterator() { doTest(); } public void testUnboxing() { doTest(); } public void testParentheses() { doTest(); } + public void testEmptyLoop() { doTest(); } @Override protected void tuneFixture(JavaModuleFixtureBuilder builder) {