Skip to content

Commit 2dde254

Browse files
cushonError Prone Team
authored and
Error Prone Team
committed
Update references to javadoc APIs after the introduction of Markdown doc comments
openjdk/jdk@0a58cff #4415 PiperOrigin-RevId: 638661786
1 parent 5fef6e0 commit 2dde254

File tree

9 files changed

+83
-17
lines changed

9 files changed

+83
-17
lines changed

check_api/src/main/java/com/google/errorprone/util/Comments.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,9 @@ public static String getTextFromComment(ErrorProneComment comment) {
9696
return comment.getText().replaceAll("^\\s*/\\*\\s*(.*?)\\s*\\*/\\s*", "$1");
9797
case LINE:
9898
return comment.getText().replaceAll("^\\s*//\\s*", "");
99-
case JAVADOC:
99+
case JAVADOC_BLOCK:
100100
return comment.getText().replaceAll("^\\s*/\\*\\*\\s*(.*?)\\s*\\*/\\s*", "$1");
101+
default:
101102
}
102103
throw new AssertionError(comment.getStyle());
103104
}

check_api/src/main/java/com/google/errorprone/util/ErrorProneComment.java

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ public final class ErrorProneComment {
3030
private final int endPos;
3131
private final int offset;
3232
private final Supplier<String> text;
33-
private final CommentStyle style;
33+
private final ErrorProneCommentStyle style;
3434

35-
ErrorProneComment(int pos, int endPos, int offset, Supplier<String> text, CommentStyle style) {
35+
ErrorProneComment(
36+
int pos, int endPos, int offset, Supplier<String> text, ErrorProneCommentStyle style) {
3637
this.pos = pos;
3738
this.endPos = endPos;
3839
this.offset = offset;
@@ -67,7 +68,31 @@ public int getSourcePos(int index) {
6768
return pos + index + offset;
6869
}
6970

70-
public CommentStyle getStyle() {
71+
/** A compatibility wrapper for {@link CommentStyle}. */
72+
public enum ErrorProneCommentStyle {
73+
LINE,
74+
BLOCK,
75+
JAVADOC_LINE,
76+
JAVADOC_BLOCK;
77+
78+
static ErrorProneCommentStyle from(CommentStyle style) {
79+
switch (style.name()) {
80+
case "LINE":
81+
return ErrorProneCommentStyle.LINE;
82+
case "BLOCK":
83+
return ErrorProneCommentStyle.BLOCK;
84+
case "JAVADOC_LINE":
85+
return ErrorProneCommentStyle.JAVADOC_LINE;
86+
case "JAVADOC":
87+
case "JAVADOC_BLOCK":
88+
return ErrorProneCommentStyle.JAVADOC_BLOCK;
89+
default:
90+
throw new AssertionError(style);
91+
}
92+
}
93+
}
94+
95+
public ErrorProneCommentStyle getStyle() {
7196
return style;
7297
}
7398

check_api/src/main/java/com/google/errorprone/util/ErrorProneTokens.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ protected Comment processComment(int pos, int endPos, CommentStyle style) {
118118
AccessibleReader reader = new AccessibleReader(fac, buf, buf.length);
119119
ErrorProneComment errorProneComment =
120120
new ErrorProneComment(
121-
pos, endPos, /* offset= */ 0, () -> new String(reader.getRawCharacters()), style);
121+
pos,
122+
endPos,
123+
/* offset= */ 0,
124+
() -> new String(reader.getRawCharacters()),
125+
ErrorProneComment.ErrorProneCommentStyle.from(style));
122126
comments.put(comment, errorProneComment);
123127
return comment;
124128
}

core/src/main/java/com/google/errorprone/bugpatterns/BooleanParameter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION;
2222
import static com.google.errorprone.matchers.Description.NO_MATCH;
2323
import static com.google.errorprone.util.ASTHelpers.getStartPosition;
24-
import static com.sun.tools.javac.parser.Tokens.Comment.CommentStyle.BLOCK;
2524

2625
import com.google.common.base.Ascii;
2726
import com.google.common.collect.ImmutableSet;
@@ -35,6 +34,7 @@
3534
import com.google.errorprone.matchers.Description;
3635
import com.google.errorprone.util.ASTHelpers;
3736
import com.google.errorprone.util.Comments;
37+
import com.google.errorprone.util.ErrorProneComment.ErrorProneCommentStyle;
3838
import com.google.errorprone.util.ErrorProneToken;
3939
import com.sun.source.tree.ExpressionTree;
4040
import com.sun.source.tree.MethodInvocationTree;
@@ -130,7 +130,7 @@ private void checkParameter(
130130

131131
private static boolean hasParameterComment(ErrorProneToken token) {
132132
return token.comments().stream()
133-
.filter(c -> c.getStyle() == BLOCK)
133+
.filter(c -> c.getStyle() == ErrorProneCommentStyle.BLOCK)
134134
.anyMatch(
135135
c ->
136136
NamedParameterComment.PARAMETER_COMMENT_PATTERN

core/src/main/java/com/google/errorprone/bugpatterns/ParameterName.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import com.google.errorprone.util.ASTHelpers;
3939
import com.google.errorprone.util.Comments;
4040
import com.google.errorprone.util.ErrorProneComment;
41+
import com.google.errorprone.util.ErrorProneComment.ErrorProneCommentStyle;
4142
import com.google.errorprone.util.ErrorProneToken;
4243
import com.google.errorprone.util.ErrorProneTokens;
4344
import com.sun.source.tree.ExpressionTree;
@@ -46,7 +47,6 @@
4647
import com.sun.source.tree.Tree;
4748
import com.sun.tools.javac.code.Symbol.MethodSymbol;
4849
import com.sun.tools.javac.code.Symbol.VarSymbol;
49-
import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
5050
import com.sun.tools.javac.util.Position;
5151
import java.util.ArrayDeque;
5252
import java.util.ArrayList;
@@ -199,7 +199,7 @@ private void checkArgument(
199199
VarSymbol formal, ExpressionTree actual, ErrorProneToken token, VisitorState state) {
200200
List<FixInfo> matches = new ArrayList<>();
201201
for (ErrorProneComment comment : token.comments()) {
202-
if (comment.getStyle().equals(CommentStyle.LINE)) {
202+
if (comment.getStyle().equals(ErrorProneCommentStyle.LINE)) {
203203
// These are usually not intended as a parameter comment, and we don't want to flag if they
204204
// happen to match the parameter comment format.
205205
continue;

core/src/main/java/com/google/errorprone/bugpatterns/argumentselectiondefects/NamedParameterComment.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import com.google.errorprone.util.Commented;
2323
import com.google.errorprone.util.Comments;
2424
import com.google.errorprone.util.ErrorProneComment;
25+
import com.google.errorprone.util.ErrorProneComment.ErrorProneCommentStyle;
2526
import com.sun.source.tree.ExpressionTree;
2627
import com.sun.tools.javac.code.Symbol.MethodSymbol;
27-
import com.sun.tools.javac.parser.Tokens.Comment.CommentStyle;
2828
import java.util.Arrays;
2929
import java.util.Optional;
3030
import java.util.regex.Matcher;
@@ -107,7 +107,8 @@ private static boolean isApproximateMatchingComment(ErrorProneComment comment, S
107107
static MatchedComment match(Commented<ExpressionTree> actual, String formal) {
108108
Optional<ErrorProneComment> lastBlockComment =
109109
Streams.findLast(
110-
actual.beforeComments().stream().filter(c -> c.getStyle() == CommentStyle.BLOCK));
110+
actual.beforeComments().stream()
111+
.filter(c -> c.getStyle() == ErrorProneCommentStyle.BLOCK));
111112

112113
if (lastBlockComment.isPresent()) {
113114
Matcher m =

core/src/main/java/com/google/errorprone/bugpatterns/javadoc/NotJavadoc.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import static com.google.errorprone.util.ASTHelpers.getStartPosition;
2424
import static com.google.errorprone.util.ASTHelpers.getSymbol;
2525
import static com.google.errorprone.util.ErrorProneTokens.getTokens;
26-
import static com.sun.tools.javac.parser.Tokens.Comment.CommentStyle.JAVADOC;
2726

2827
import com.google.common.collect.ImmutableMap;
2928
import com.google.common.collect.ImmutableRangeSet;
@@ -35,6 +34,7 @@
3534
import com.google.errorprone.matchers.Description;
3635
import com.google.errorprone.util.ASTHelpers;
3736
import com.google.errorprone.util.ErrorProneComment;
37+
import com.google.errorprone.util.ErrorProneComment.ErrorProneCommentStyle;
3838
import com.google.errorprone.util.ErrorProneToken;
3939
import com.sun.source.tree.ClassTree;
4040
import com.sun.source.tree.CompilationUnitTree;
@@ -62,7 +62,8 @@ public Description matchCompilationUnit(CompilationUnitTree tree, VisitorState s
6262
ImmutableRangeSet<Integer> suppressedRegions = suppressedRegions(state);
6363
for (ErrorProneToken token : getTokens(state.getSourceCode().toString(), state.context)) {
6464
for (ErrorProneComment comment : token.comments()) {
65-
if (!comment.getStyle().equals(JAVADOC) || comment.getText().equals("/**/")) {
65+
if (!comment.getStyle().equals(ErrorProneCommentStyle.JAVADOC_BLOCK)
66+
|| comment.getText().equals("/**/")) {
6667
continue;
6768
}
6869
if (javadocableTrees.containsKey(token.pos())) {

core/src/main/java/com/google/errorprone/bugpatterns/javadoc/Utils.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@
3030
import com.sun.source.util.DocTreePath;
3131
import com.sun.tools.javac.api.JavacTrees;
3232
import com.sun.tools.javac.tree.DCTree.DCDocComment;
33+
import com.sun.tools.javac.tree.DocCommentTable;
3334
import com.sun.tools.javac.tree.JCTree;
3435
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
3536
import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
3637
import com.sun.tools.javac.util.Position;
38+
import java.lang.reflect.Method;
3739
import java.util.Optional;
3840
import javax.annotation.Nullable;
3941

@@ -53,8 +55,26 @@ static Optional<String> getBestMatch(String to, int maxEditDistance, Iterable<St
5355
}
5456

5557
static DCDocComment getDocComment(VisitorState state, Tree tree) {
56-
return ((JCCompilationUnit) state.getPath().getCompilationUnit())
57-
.docComments.getCommentTree((JCTree) tree);
58+
return getCommentTree(
59+
((JCCompilationUnit) state.getPath().getCompilationUnit()).docComments, (JCTree) tree);
60+
}
61+
62+
private static final Method COMMENT_TREE_METHOD = getCommentTreeMethod();
63+
64+
private static Method getCommentTreeMethod() {
65+
try {
66+
return DocCommentTable.class.getMethod("getCommentTree", JCTree.class);
67+
} catch (ReflectiveOperationException e) {
68+
throw new LinkageError(e.getMessage(), e);
69+
}
70+
}
71+
72+
private static DCDocComment getCommentTree(DocCommentTable docCommentTable, JCTree tree) {
73+
try {
74+
return (DCDocComment) COMMENT_TREE_METHOD.invoke(docCommentTable, tree);
75+
} catch (ReflectiveOperationException e) {
76+
throw new LinkageError(e.getMessage(), e);
77+
}
5878
}
5979

6080
static SuggestedFix replace(DocTree docTree, String replacement, VisitorState state) {

core/src/test/java/com/google/errorprone/fixes/SuggestedFixesTest.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
import com.sun.source.util.DocTreePathScanner;
6565
import com.sun.tools.javac.code.Type;
6666
import com.sun.tools.javac.tree.DCTree;
67+
import com.sun.tools.javac.tree.DCTree.DCDocComment;
68+
import com.sun.tools.javac.tree.DocCommentTable;
6769
import com.sun.tools.javac.tree.JCTree;
6870
import java.io.IOException;
6971
import java.lang.annotation.Retention;
@@ -906,8 +908,9 @@ public static class JavadocQualifier extends BugChecker implements BugChecker.Cl
906908
@Override
907909
public Description matchClass(ClassTree tree, VisitorState state) {
908910
DCTree.DCDocComment comment =
909-
((JCTree.JCCompilationUnit) state.getPath().getCompilationUnit())
910-
.docComments.getCommentTree((JCTree) tree);
911+
getCommentTree(
912+
((JCTree.JCCompilationUnit) state.getPath().getCompilationUnit()).docComments,
913+
(JCTree) tree);
911914
if (comment == null) {
912915
return Description.NO_MATCH;
913916
}
@@ -927,6 +930,17 @@ public Void visitLink(LinkTree node, Void unused) {
927930
}
928931
}
929932

933+
private static DCDocComment getCommentTree(DocCommentTable docCommentTable, JCTree tree) {
934+
try {
935+
return (DCDocComment)
936+
DocCommentTable.class
937+
.getMethod("getCommentTree", JCTree.class)
938+
.invoke(docCommentTable, tree);
939+
} catch (ReflectiveOperationException e) {
940+
throw new LinkageError(e.getMessage(), e);
941+
}
942+
}
943+
930944
@Test
931945
public void qualifyJavadocTest() {
932946
BugCheckerRefactoringTestHelper.newInstance(JavadocQualifier.class, getClass())

0 commit comments

Comments
 (0)