Skip to content

Commit 0690641

Browse files
committed
Java: fix Javadoc roundtrip for multi-line HTML comments inside block tags
`visitComment` consumed `node.getBody().length()` characters of cursor and emitted a single `Javadoc.Text` containing the entire body. For multi-line HTML comments this dropped the leading-line `*` margins on print and left the corresponding `LineBreak` markers stranded in the `lineBreaks` map, where they leaked out as trailing `*` lines before `**/`. Route `DCComment` through the same `visitText(body)` path that `visitDocComment` already uses for top-level HTML comments, so the body's newlines are processed and the margin `LineBreak`s are consumed.
1 parent 70c9ddd commit 0690641

6 files changed

Lines changed: 28 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: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,24 @@ class Test {
224224
);
225225
}
226226

227+
@Issue("https://github.com/moderneinc/customer-requests/issues/2277")
228+
@Test
229+
void htmlCommentNestedAfterVersionTag() {
230+
rewriteRun(
231+
java(
232+
"""
233+
/**
234+
* @version 0.1
235+
* <!-- xml comment nested
236+
* * [someAuthor] fixed something
237+
* -->
238+
**/
239+
class Test {}
240+
"""
241+
)
242+
);
243+
}
244+
227245
// docRoot
228246
@Test
229247
void docRoot() {

0 commit comments

Comments
 (0)