diff --git a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java index 5e68b7426..c9218dc7d 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java @@ -18,6 +18,7 @@ import lombok.EqualsAndHashCode; import lombok.Value; import org.openrewrite.internal.ListUtils; +import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.DeleteStatement; import org.openrewrite.java.JavaIsoVisitor; import org.openrewrite.java.JavaTemplate; @@ -97,7 +98,9 @@ public J.Block visitBlock(J.Block block, P p) { public J.Try visitTry(J.Try tryable, P p) { J.Try t = super.visitTry(tryable, p); - if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralTry()) && isEmptyBlock(t.getBody())) { + if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralTry()) && + isEmptyBlock(t.getBody()) && + isEmptyResources(t.getResources())) { doAfterVisit(new DeleteStatement<>(tryable)); } else if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralFinally()) && t.getFinally() != null && !t.getCatches().isEmpty() && isEmptyBlock(t.getFinally())) { @@ -211,7 +214,7 @@ public J.Switch visitSwitch(J.Switch switch_, P p) { private boolean isEmptyBlock(Statement blockNode) { if (blockNode instanceof J.Block) { - J.Block block = (J.Block)blockNode; + J.Block block = (J.Block) blockNode; if (EmptyBlockStyle.BlockPolicy.STATEMENT.equals(emptyBlockStyle.getBlockPolicy())) { return block.getStatements().isEmpty(); } else if (EmptyBlockStyle.BlockPolicy.TEXT.equals(emptyBlockStyle.getBlockPolicy())) { @@ -221,6 +224,10 @@ private boolean isEmptyBlock(Statement blockNode) { return false; } + private boolean isEmptyResources(@Nullable List resources) { + return resources == null || resources.isEmpty(); + } + private static class ExtractSideEffectsOfIfCondition

extends JavaVisitor

{ private final J.Block enclosingBlock; private final J.If toExtract; diff --git a/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java b/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java index 8e5b1f619..4d28214aa 100644 --- a/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java @@ -116,7 +116,7 @@ void emptyTry() { public class A { { final String fileName = "fileName"; - try(FileInputStream fis = new FileInputStream(fileName)) { + try { } catch (IOException e) { } } @@ -414,4 +414,25 @@ public class A { ) ); } + + @Test + void emptyTryWithResources() { + rewriteRun( + //language=java + java( + """ + import java.io.*; + + public class A { + { + final String fileName = "fileName"; + try (FileInputStream fis = new FileInputStream(fileName)) { + } catch (IOException e) { + } + } + } + """ + ) + ); + } }