Skip to content

Commit 7fb338d

Browse files
authored
Java: preserve multi-line HTML comments inside Javadoc block tags (#7500)
`convertMultiline` already routed `DCText` through `visitText` so that each newline consumes the corresponding `LineBreak` (with its `*` margin) from the lineBreaks map. `DCComment` fell through to `scan`/`visitComment`, which bumped the cursor by the body length in one shot and wrapped the multi-line body in a single `Javadoc.Text`. The result was that interior `*` margins were dropped and orphan `LineBreak`s were appended at the end of the doc as extra blank `*` lines. Mirror the `DCText` handling for `DCComment` across all version-specific visitors.
1 parent 7e4c51d commit 7fb338d

6 files changed

Lines changed: 27 additions & 0 deletions

File tree

rewrite-java-11/src/main/java/org/openrewrite/java/isolated/ReloadableJava11JavadocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,6 +1158,8 @@ private List<Javadoc> convertMultiline(List<? extends DocTree> dts) {
11581158
js.addAll(whitespaceBefore());
11591159
if (dt instanceof DCTree.DCText) {
11601160
js.addAll(visitText(((DCTree.DCText) dt).getBody()));
1161+
} else if (dt instanceof DCTree.DCComment) {
1162+
js.addAll(visitText(((DCTree.DCComment) dt).getBody()));
11611163
} else {
11621164
js.add((Javadoc) scan(dt, emptyList()));
11631165
}

rewrite-java-17/src/main/java/org/openrewrite/java/isolated/ReloadableJava17JavadocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,6 +1161,8 @@ private List<Javadoc> convertMultiline(List<? extends DocTree> dts) {
11611161
js.addAll(whitespaceBefore());
11621162
if (dt instanceof DCTree.DCText) {
11631163
js.addAll(visitText(((DCTree.DCText) dt).getBody()));
1164+
} else if (dt instanceof DCTree.DCComment) {
1165+
js.addAll(visitText(((DCTree.DCComment) dt).getBody()));
11641166
} else {
11651167
js.add((Javadoc) scan(dt, emptyList()));
11661168
}

rewrite-java-21/src/main/java/org/openrewrite/java/isolated/ReloadableJava21JavadocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1196,6 +1196,8 @@ private List<Javadoc> convertMultiline(List<? extends DocTree> dts) {
11961196
js.addAll(whitespaceBefore());
11971197
if (dt instanceof DCTree.DCText) {
11981198
js.addAll(visitText(((DCTree.DCText) dt).getBody()));
1199+
} else if (dt instanceof DCTree.DCComment) {
1200+
js.addAll(visitText(((DCTree.DCComment) dt).getBody()));
11991201
} else {
12001202
js.add((Javadoc) scan(dt, emptyList()));
12011203
}

rewrite-java-25/src/main/java/org/openrewrite/java/isolated/ReloadableJava25JavadocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,6 +1339,8 @@ private List<Javadoc> convertMultiline(List<? extends DocTree> dts) {
13391339
js.addAll(visitText(textNode.getBody()));
13401340
} else if (dt instanceof DCTree.DCRawText rawTextNode) {
13411341
js.addAll(visitText(rawTextNode.getContent()));
1342+
} else if (dt instanceof DCTree.DCComment commentNode) {
1343+
js.addAll(visitText(commentNode.getBody()));
13421344
} else {
13431345
js.add((Javadoc) scan(dt, emptyList()));
13441346
}

rewrite-java-8/src/main/java/org/openrewrite/java/ReloadableJava8JavadocVisitor.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,8 @@ private List<Javadoc> convertMultiline(List<? extends DocTree> dts) {
10861086
js.addAll(whitespaceBefore());
10871087
if (dt instanceof DCTree.DCText) {
10881088
js.addAll(visitText(((DCTree.DCText) dt).getBody()));
1089+
} else if (dt instanceof DCTree.DCComment) {
1090+
js.addAll(visitText(((DCTree.DCComment) dt).getBody()));
10891091
} else {
10901092
js.add((Javadoc) scan(dt, emptyList()));
10911093
}

rewrite-java-tck/src/main/java/org/openrewrite/java/tree/JavadocTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2214,6 +2214,23 @@ class Test {
22142214
);
22152215
}
22162216

2217+
@Test
2218+
void multilineHtmlCommentInBlockTag() {
2219+
rewriteRun(
2220+
java(
2221+
"""
2222+
/**
2223+
* @version 0.1
2224+
* <!-- xml comment nested
2225+
* * [someAuthor] fixed something
2226+
* -->
2227+
**/
2228+
class Test {}
2229+
"""
2230+
)
2231+
);
2232+
}
2233+
22172234
@Issue("https://github.com/openrewrite/rewrite/issues/5443")
22182235
@Test
22192236
void parsingIncorrectJavadocValueReference() {

0 commit comments

Comments
 (0)