From 86d095cd7908b7134c024be91c00e92b6f40e889 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 7 Oct 2025 14:42:46 +0200 Subject: [PATCH] [java-inspections] IDEA-380307 "Fix all 'Code block contains single statement' problems in file" changes semantics GitOrigin-RevId: 24a924d763405960425c35436372f57ab64a70e9 --- .../ig/style/SingleStatementInBlockInspection.java | 2 ++ .../igfixes/single_statement_block/FixAll.after.java | 9 +++++++++ .../siyeh/igfixes/single_statement_block/FixAll.java | 11 +++++++++++ .../fixes/braces/SingleStatementInBlockFixTest.java | 1 + 4 files changed, 23 insertions(+) create mode 100644 java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.after.java create mode 100644 java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.java diff --git a/java/java-analysis-impl/src/com/siyeh/ig/style/SingleStatementInBlockInspection.java b/java/java-analysis-impl/src/com/siyeh/ig/style/SingleStatementInBlockInspection.java index a219601627da..fd85b4bbc098 100644 --- a/java/java-analysis-impl/src/com/siyeh/ig/style/SingleStatementInBlockInspection.java +++ b/java/java-analysis-impl/src/com/siyeh/ig/style/SingleStatementInBlockInspection.java @@ -22,6 +22,7 @@ import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.CommentTracker; +import com.siyeh.ig.psiutils.ControlFlowUtils; import org.jetbrains.annotations.*; import java.util.Arrays; @@ -175,6 +176,7 @@ public class SingleStatementInBlockInspection extends BaseInspection implements return null; } if (!(body instanceof PsiBlockStatement block)) return null; + if (SingleStatementInBlockVisitor.isDanglingElseProblem(ControlFlowUtils.stripBraces(block), block)) return null; return new BlockData(statement, block); } diff --git a/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.after.java b/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.after.java new file mode 100644 index 000000000000..2f9dcd320fe3 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.after.java @@ -0,0 +1,9 @@ +class X { + static int test(int[] a) { + if (a[0] == 0) { + if (a[1] == 0) return 1; + else if (a[1] == 1) return 2; + } else return 3; + return -1; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.java b/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.java new file mode 100644 index 000000000000..17f4874456c7 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igfixes/single_statement_block/FixAll.java @@ -0,0 +1,11 @@ +class X { + static int test(int[] a) { + if (a[0] == 0) { + if (a[1] == 0) return 1; + else { + if (a[1] == 1) return 2; + } + } else return 3; + return -1; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/siyeh/ig/fixes/braces/SingleStatementInBlockFixTest.java b/java/java-tests/testSrc/com/siyeh/ig/fixes/braces/SingleStatementInBlockFixTest.java index 15d394df43aa..242e7379af5d 100644 --- a/java/java-tests/testSrc/com/siyeh/ig/fixes/braces/SingleStatementInBlockFixTest.java +++ b/java/java-tests/testSrc/com/siyeh/ig/fixes/braces/SingleStatementInBlockFixTest.java @@ -39,6 +39,7 @@ public class SingleStatementInBlockFixTest extends IGQuickFixesTestCase { public void testIncompleteIf() { assertQuickfixNotAvailable(getMessage("for")); } public void testNestedFor() { assertQuickfixNotAvailable(getMessage("for")); } public void testNestedFor2() { doTest("for"); } + public void testFixAll() { super.doTest("Fix all 'Code block contains single statement' problems in file");} public void testHighlighting() { myFixture.configureByText("Test.java", """ class X {