diff --git a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java index bbe4c687ef..52983f1e1f 100644 --- a/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java +++ b/src/main/java/org/openrewrite/staticanalysis/EmptyBlockVisitor.java @@ -48,9 +48,12 @@ public class EmptyBlockVisitor

extends JavaIsoVisitor

{ public J.WhileLoop visitWhileLoop(J.WhileLoop whileLoop, P p) { J.WhileLoop w = super.visitWhileLoop(whileLoop, p); - if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && isEmptyBlock(w.getBody())) { + if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && w.getBody() instanceof J.Block) { J.Block body = (J.Block) w.getBody(); - w = continueStatement.apply(updateCursor(w), body.getCoordinates().lastStatement()); + List statements = body.getStatements(); + if (statements.size() == 1 && statements.get(0) instanceof J.Continue) { + w = w.withBody(body.withStatements(new ArrayList<>())); + } } return w; @@ -60,9 +63,12 @@ public J.WhileLoop visitWhileLoop(J.WhileLoop whileLoop, P p) { public J.DoWhileLoop visitDoWhileLoop(J.DoWhileLoop doWhileLoop, P p) { J.DoWhileLoop w = super.visitDoWhileLoop(doWhileLoop, p); - if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && isEmptyBlock(w.getBody())) { + if (Boolean.TRUE.equals(emptyBlockStyle.getLiteralWhile()) && w.getBody() instanceof J.Block) { J.Block body = (J.Block) w.getBody(); - w = continueStatement.apply(updateCursor(w), body.getCoordinates().lastStatement()); + List statements = body.getStatements(); + if (statements.size() == 1 && statements.get(0) instanceof J.Continue) { + w = w.withBody(body.withStatements(new ArrayList<>())); + } } return w; diff --git a/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java b/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java index b6b13c4685..0a44c353c6 100644 --- a/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java +++ b/src/test/java/org/openrewrite/staticanalysis/EmptyBlockTest.java @@ -223,8 +223,10 @@ void emptyLoops() { public class A { public void foo() { while(true) { + continue; } do { + continue; } while(true); } } @@ -233,10 +235,8 @@ public void foo() { public class A { public void foo() { while(true) { - continue; } do { - continue; } while(true); } }