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 {