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);
}
}