Skip to content

Commit f8ade2a

Browse files
Parser error on multiline javadoc tag (#5263)
* Test case for parser error * Capture any whitespace (including newlines) between the dot and the name * Replicate the same change to the other JavaDoc parsers --------- Co-authored-by: Tim te Beek <[email protected]>
1 parent 04628ec commit f8ade2a

File tree

5 files changed

+35
-6
lines changed

5 files changed

+35
-6
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1169,11 +1169,13 @@ public J visitMemberSelect(MemberSelectTree node, Space fmt) {
11691169
JCTree.JCFieldAccess fieldAccess = (JCTree.JCFieldAccess) node;
11701170
Expression selected = (Expression) scan(fieldAccess.selected, Space.EMPTY);
11711171
sourceBefore(".");
1172+
// Capture any whitespace (including newlines) between the dot and the name
1173+
String whitespaceAfterDot = whitespaceBeforeAsString();
11721174
cursor += fieldAccess.name.toString().length();
11731175
return new J.FieldAccess(randomId(), fmt, Markers.EMPTY,
11741176
selected,
11751177
JLeftPadded.build(new J.Identifier(randomId(),
1176-
Space.EMPTY,
1178+
Space.build(whitespaceAfterDot, emptyList()),
11771179
Markers.EMPTY,
11781180
emptyList(),
11791181
fieldAccess.name.toString(), null, null)),

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1173,11 +1173,13 @@ public J visitMemberSelect(MemberSelectTree node, Space fmt) {
11731173
JCTree.JCFieldAccess fieldAccess = (JCTree.JCFieldAccess) node;
11741174
Expression selected = (Expression) scan(fieldAccess.selected, Space.EMPTY);
11751175
sourceBefore(".");
1176+
// Capture any whitespace (including newlines) between the dot and the name
1177+
String whitespaceAfterDot = whitespaceBeforeAsString();
11761178
cursor += fieldAccess.name.toString().length();
11771179
return new J.FieldAccess(randomId(), fmt, Markers.EMPTY,
11781180
selected,
11791181
JLeftPadded.build(new J.Identifier(randomId(),
1180-
Space.EMPTY,
1182+
Space.build(whitespaceAfterDot, emptyList()),
11811183
Markers.EMPTY,
11821184
emptyList(),
11831185
fieldAccess.name.toString(), null, null)),

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1208,11 +1208,13 @@ public J visitMemberSelect(MemberSelectTree node, Space fmt) {
12081208
JCTree.JCFieldAccess fieldAccess = (JCTree.JCFieldAccess) node;
12091209
Expression selected = (Expression) scan(fieldAccess.selected, Space.EMPTY);
12101210
sourceBefore(".");
1211+
// Capture any whitespace (including newlines) between the dot and the name
1212+
String whitespaceAfterDot = whitespaceBeforeAsString();
12111213
cursor += fieldAccess.name.toString().length();
12121214
return new J.FieldAccess(randomId(), fmt, Markers.EMPTY,
12131215
selected,
12141216
JLeftPadded.build(new J.Identifier(randomId(),
1215-
Space.EMPTY,
1217+
Space.build(whitespaceAfterDot, emptyList()),
12161218
Markers.EMPTY,
12171219
emptyList(),
12181220
fieldAccess.name.toString(), null, null)),

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1097,11 +1097,13 @@ public J visitMemberSelect(MemberSelectTree node, Space fmt) {
10971097
JCTree.JCFieldAccess fieldAccess = (JCTree.JCFieldAccess) node;
10981098
Expression selected = (Expression) scan(fieldAccess.selected, Space.EMPTY);
10991099
sourceBefore(".");
1100+
// Capture any whitespace (including newlines) between the dot and the name
1101+
String whitespaceAfterDot = whitespaceBeforeAsString();
11001102
cursor += fieldAccess.name.toString().length();
11011103
return new J.FieldAccess(randomId(), fmt, Markers.EMPTY,
11021104
selected,
11031105
JLeftPadded.build(new J.Identifier(randomId(),
1104-
Space.EMPTY,
1106+
Space.build(whitespaceAfterDot, emptyList()),
11051107
Markers.EMPTY,
11061108
emptyList(), fieldAccess.name.toString(), null, null)),
11071109
typeMapping.type(node));

rewrite-java-test/src/test/java/org/openrewrite/java/JavaParserTest.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,29 @@ public InstallationStatus create(Instant updateTime) {
391391
}
392392
}
393393
"""
394-
));
394+
)
395+
);
396+
}
397+
398+
@Test
399+
void multiLinePackageComment() {
400+
rewriteRun(
401+
// language=java
402+
java(
403+
"""
404+
package com.abc;
405+
public class Server {
406+
/**
407+
* @see com.abc.Server#load(
408+
* java.lang.
409+
* String)
410+
*/
411+
public void load(String str) {
412+
}
413+
}
414+
"""
415+
)
416+
);
395417
}
396418

397419
@Issue("https://github.com/openrewrite/rewrite/issues/5445")
@@ -435,5 +457,4 @@ private String mapFoo(final int i) {
435457
)
436458
);
437459
}
438-
439460
}

0 commit comments

Comments
 (0)