diff --git a/src/main/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockComment.java b/src/main/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockComment.java index e999b4219d..c6744be023 100644 --- a/src/main/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockComment.java +++ b/src/main/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockComment.java @@ -17,6 +17,7 @@ import lombok.Getter; import org.openrewrite.ExecutionContext; +import org.openrewrite.Preconditions; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; import org.openrewrite.internal.ListUtils; @@ -24,6 +25,7 @@ import org.openrewrite.java.tree.Comment; import org.openrewrite.java.tree.Space; import org.openrewrite.java.tree.TextComment; +import org.openrewrite.staticanalysis.java.JavaFileChecker; public class DanglingDocCommentToBlockComment extends Recipe { @@ -38,7 +40,9 @@ public class DanglingDocCommentToBlockComment extends Recipe { @Override public TreeVisitor getVisitor() { - return new JavaIsoVisitor() { + // Kotlin, Groovy and JavaScript parse every comment, KDoc and JSDoc included, to a TextComment, + // so they would all look dangling. The javac lint only concerns Java sources anyway. + return Preconditions.check(new JavaFileChecker<>(), new JavaIsoVisitor() { @Override public Space visitSpace(Space space, Space.Location loc, ExecutionContext ctx) { // A leading comment is conventionally the license header, and javac does not flag it. @@ -47,7 +51,7 @@ public Space visitSpace(Space space, Space.Location loc, ExecutionContext ctx) { } return space.withComments(ListUtils.map(space.getComments(), DanglingDocCommentToBlockComment::toBlockComment)); } - }; + }); } /** diff --git a/src/test/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockCommentTest.java b/src/test/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockCommentTest.java index a85d374a4d..cf54c876d2 100644 --- a/src/test/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockCommentTest.java +++ b/src/test/java/org/openrewrite/java/migrate/DanglingDocCommentToBlockCommentTest.java @@ -20,7 +20,9 @@ import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; +import static org.openrewrite.groovy.Assertions.groovy; import static org.openrewrite.java.Assertions.java; +import static org.openrewrite.kotlin.Assertions.kotlin; class DanglingDocCommentToBlockCommentTest implements RewriteTest { @@ -199,4 +201,36 @@ void a() { ) ); } + + @Test + void leaveKotlinAlone() { + rewriteRun( + kotlin( + """ + import java.util.UUID + + /******************************************************************* + * KDoc is parsed as a plain comment, so it would otherwise look dangling. + */ + val id = UUID.randomUUID() + """ + ) + ); + } + + @Test + void leaveGroovyAlone() { + rewriteRun( + groovy( + """ + import java.util.UUID + + /******************************************************************* + * Groovydoc is parsed as a plain comment, so it would otherwise look dangling. + */ + def id = UUID.randomUUID() + """ + ) + ); + } }