What version of OpenRewrite are you using?
- org.openrewrite:rewrite-core:8.52.1
What is the smallest, simplest way to reproduce the problem?
This is a case the Javadoc is invalid, but where the parser should yet not fail. This was found in our code base but have since been fixed so this is not a blocker for us.
@Test
void parsingIncorrectJavadocValueReference() {
rewriteRun(
// language=java
java(
"""
public class Foo {
private static final String BAR = "bar";
/**
This is an incorrect reference {@value BAR}
*/
public void foo() {}
}
"""));
}
Fails with:
org.openrewrite.internal.RecipeRunException: java.lang.NullPointerException: Cannot invoke "org.openrewrite.java.tree.JRightPadded.getElement()" because "this.containing" is null
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:281)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.java.JavadocVisitor.javaVisitorVisit(JavadocVisitor.java:38)
at org.openrewrite.java.JavadocPrinter.visitInlinedValue(JavadocPrinter.java:148)
at org.openrewrite.java.JavadocPrinter.visitInlinedValue(JavadocPrinter.java:29)
at org.openrewrite.java.tree.Javadoc$InlinedValue.acceptJavadoc(Javadoc.java:282)
at org.openrewrite.java.tree.Javadoc.accept(Javadoc.java:39)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavadocPrinter.visit(JavadocPrinter.java:352)
at org.openrewrite.java.JavadocPrinter.visitDocComment(JavadocPrinter.java:71)
at org.openrewrite.java.JavadocPrinter.visitDocComment(JavadocPrinter.java:29)
at org.openrewrite.java.tree.Javadoc$DocComment.acceptJavadoc(Javadoc.java:158)
at org.openrewrite.java.tree.Javadoc.accept(Javadoc.java:39)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.java.tree.Javadoc$DocComment.printComment(Javadoc.java:163)
at org.openrewrite.java.JavaPrinter.visitSpace(JavaPrinter.java:69)
at org.openrewrite.java.JavaPrinter.beforeSyntax(JavaPrinter.java:1263)
at org.openrewrite.java.JavaPrinter.beforeSyntax(JavaPrinter.java:1252)
at org.openrewrite.java.JavaPrinter.visitMethodDeclaration(JavaPrinter.java:828)
at org.openrewrite.java.JavaPrinter.visitMethodDeclaration(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$MethodDeclaration.acceptJava(J.java:3811)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavaPrinter.visitStatement(JavaPrinter.java:403)
at org.openrewrite.java.JavaPrinter.visitStatements(JavaPrinter.java:394)
at org.openrewrite.java.JavaPrinter.visitBlock(JavaPrinter.java:385)
at org.openrewrite.java.JavaPrinter.visitBlock(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$Block.acceptJava(J.java:837)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavaPrinter.visitClassDeclaration(JavaPrinter.java:558)
at org.openrewrite.java.JavaPrinter.visitClassDeclaration(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$ClassDeclaration.acceptJava(J.java:1345)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:291)
at org.openrewrite.java.JavaPrinter.visitCompilationUnit(JavaPrinter.java:571)
at org.openrewrite.java.JavaPrinter.visitCompilationUnit(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$CompilationUnit.acceptJava(J.java:1616)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.Tree.print(Tree.java:81)
at org.openrewrite.SourceFile.printAll(SourceFile.java:102)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:314)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:130)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:125)
at
KnownBugsTest.parsingIncorrectJavadocValueReference(KnownBugsTest.java:338)
Caused by: java.lang.NullPointerException: Cannot invoke "org.openrewrite.java.tree.JRightPadded.getElement()" because "this.containing" is null
at org.openrewrite.java.tree.J$MemberReference.getContaining(J.java:3544)
at org.openrewrite.java.JavadocPrinter$JavadocJavaPrinter.visitMemberReference(JavadocPrinter.java:400)
at org.openrewrite.java.JavadocPrinter$JavadocJavaPrinter.visitMemberReference(JavadocPrinter.java:366)
at org.openrewrite.java.tree.J$MemberReference.acceptJava(J.java:3614)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.java.JavadocVisitor.javaVisitorVisit(JavadocVisitor.java:38)
at org.openrewrite.java.JavadocPrinter.visitInlinedValue(JavadocPrinter.java:148)
at org.openrewrite.java.JavadocPrinter.visitInlinedValue(JavadocPrinter.java:29)
at org.openrewrite.java.tree.Javadoc$InlinedValue.acceptJavadoc(Javadoc.java:282)
at org.openrewrite.java.tree.Javadoc.accept(Javadoc.java:39)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavadocPrinter.visit(JavadocPrinter.java:352)
at org.openrewrite.java.JavadocPrinter.visitDocComment(JavadocPrinter.java:71)
at org.openrewrite.java.JavadocPrinter.visitDocComment(JavadocPrinter.java:29)
at org.openrewrite.java.tree.Javadoc$DocComment.acceptJavadoc(Javadoc.java:158)
at org.openrewrite.java.tree.Javadoc.accept(Javadoc.java:39)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.java.tree.Javadoc$DocComment.printComment(Javadoc.java:163)
at org.openrewrite.java.JavaPrinter.visitSpace(JavaPrinter.java:69)
at org.openrewrite.java.JavaPrinter.beforeSyntax(JavaPrinter.java:1263)
at org.openrewrite.java.JavaPrinter.beforeSyntax(JavaPrinter.java:1252)
at org.openrewrite.java.JavaPrinter.visitMethodDeclaration(JavaPrinter.java:828)
at org.openrewrite.java.JavaPrinter.visitMethodDeclaration(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$MethodDeclaration.acceptJava(J.java:3811)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavaPrinter.visitStatement(JavaPrinter.java:403)
at org.openrewrite.java.JavaPrinter.visitStatements(JavaPrinter.java:394)
at org.openrewrite.java.JavaPrinter.visitBlock(JavaPrinter.java:385)
at org.openrewrite.java.JavaPrinter.visitBlock(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$Block.acceptJava(J.java:837)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.java.JavaPrinter.visitClassDeclaration(JavaPrinter.java:558)
at org.openrewrite.java.JavaPrinter.visitClassDeclaration(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$ClassDeclaration.acceptJava(J.java:1345)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:291)
at org.openrewrite.java.JavaPrinter.visitCompilationUnit(JavaPrinter.java:571)
at org.openrewrite.java.JavaPrinter.visitCompilationUnit(JavaPrinter.java:35)
at org.openrewrite.java.tree.J$CompilationUnit.acceptJava(J.java:1616)
at org.openrewrite.java.tree.J.accept(J.java:58)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:245)
at org.openrewrite.TreeVisitor.visit(TreeVisitor.java:154)
at org.openrewrite.Tree.print(Tree.java:81)
at org.openrewrite.SourceFile.printAll(SourceFile.java:102)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:314)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:130)
at org.openrewrite.test.RewriteTest.rewriteRun(RewriteTest.java:125)
What version of OpenRewrite are you using?
What is the smallest, simplest way to reproduce the problem?
This is a case the Javadoc is invalid, but where the parser should yet not fail. This was found in our code base but have since been fixed so this is not a blocker for us.
Fails with: