openrewrite / rewrite

Automated mass refactoring of source code.
https://docs.openrewrite.org
Apache License 2.0
2.15k stars 321 forks source link

NPE in ReloadableJava17JavadocVisitor with Apache Wicket #2392

Closed timtebeek closed 10 months ago

timtebeek commented 1 year ago

Initially reported via Slack, but repeated here for (low priority) follow up.

Steps to reproduce

  1. git clone git@github.com:apache/wicket.git
  2. Run StringFormatted
mvn org.openrewrite.maven:rewrite-maven-plugin:4.36.0:run \
  -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:1.13.0 \
  -DactiveRecipes=org.openrewrite.java.migrate.lang.StringFormatted

This then fails to parse for instance Page2PP.java, which is a fairly minimal class containing only three javadoc tags.

Stacktrace

[WARNING] Failed to convert for the following cursor stack:--- BEGIN PATH ---
JCCompilationUnit(sourceFile = /home/tim/Documents/workspace/wicket/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/Page2PP.java)
--- END PATH ---

[DEBUG] 
org.openrewrite.java.JavaParsingException: Failed to convert for the following cursor stack:--- BEGIN PATH ---
JCCompilationUnit(sourceFile = /home/tim/Documents/workspace/wicket/wicket-examples/src/main/java/org/apache/wicket/examples/niceurl/Page2PP.java)
--- END PATH ---

    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convert (ReloadableJava17ParserVisitor.java:1570)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convertAll (ReloadableJava17ParserVisitor.java:1600)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit (ReloadableJava17ParserVisitor.java:564)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit (ReloadableJava17ParserVisitor.java:71)
    at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept (JCTree.java:614)
    at com.sun.source.util.TreePathScanner.scan (TreePathScanner.java:86)
    at org.openrewrite.java.isolated.ReloadableJava17Parser.lambda$parseInputs$0 (ReloadableJava17Parser.java:178)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.Iterator.forEachRemaining (Iterator.java:133)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining (Spliterators.java:1845)
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:509)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:499)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:921)
    at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:682)
    at org.openrewrite.java.isolated.ReloadableJava17Parser.parseInputs (ReloadableJava17Parser.java:200)
    at org.openrewrite.java.Java17Parser.parseInputs (Java17Parser.java:38)
    at org.openrewrite.Parser.parse (Parser.java:41)
    at org.openrewrite.maven.MavenMojoProjectParser.processMainSources (MavenMojoProjectParser.java:221)
    at org.openrewrite.maven.MavenMojoProjectParser.listSourceFiles (MavenMojoProjectParser.java:135)
    at org.openrewrite.maven.AbstractRewriteMojo.listResults (AbstractRewriteMojo.java:211)
    at org.openrewrite.maven.AbstractRewriteRunMojo.execute (AbstractRewriteRunMojo.java:48)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NullPointerException: Cannot read field "info" because "env" is null
    at com.sun.tools.javac.comp.Attr.attribType (Attr.java:404)
    at org.openrewrite.java.isolated.ReloadableJava17JavadocVisitor.visitReference (ReloadableJava17JavadocVisitor.java:578)
    at org.openrewrite.java.isolated.ReloadableJava17JavadocVisitor.visitSee (ReloadableJava17JavadocVisitor.java:753)
    at org.openrewrite.java.isolated.ReloadableJava17JavadocVisitor.visitSee (ReloadableJava17JavadocVisitor.java:45)
    at com.sun.tools.javac.tree.DCTree$DCSee.accept (DCTree.java:729)
    at com.sun.source.util.DocTreeScanner.scan (DocTreeScanner.java:84)
    at org.openrewrite.java.isolated.ReloadableJava17JavadocVisitor.visitDocComment (ReloadableJava17JavadocVisitor.java:336)
    at org.openrewrite.java.isolated.ReloadableJava17JavadocVisitor.visitDocComment (ReloadableJava17JavadocVisitor.java:45)
    at com.sun.tools.javac.tree.DCTree$DCDocComment.accept (DCTree.java:138)
    at com.sun.source.util.DocTreeScanner.scan (DocTreeScanner.java:84)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.formatWithCommentTree (ReloadableJava17ParserVisitor.java:2048)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convert (ReloadableJava17ParserVisitor.java:1547)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.convertAll (ReloadableJava17ParserVisitor.java:1600)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit (ReloadableJava17ParserVisitor.java:564)
    at org.openrewrite.java.isolated.ReloadableJava17ParserVisitor.visitCompilationUnit (ReloadableJava17ParserVisitor.java:71)
    at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept (JCTree.java:614)
    at com.sun.source.util.TreePathScanner.scan (TreePathScanner.java:86)
    at org.openrewrite.java.isolated.ReloadableJava17Parser.lambda$parseInputs$0 (ReloadableJava17Parser.java:178)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.Iterator.forEachRemaining (Iterator.java:133)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining (Spliterators.java:1845)
    at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:509)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:499)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential (ReduceOps.java:921)
    at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect (ReferencePipeline.java:682)
    at org.openrewrite.java.isolated.ReloadableJava17Parser.parseInputs (ReloadableJava17Parser.java:200)
    at org.openrewrite.java.Java17Parser.parseInputs (Java17Parser.java:38)
    at org.openrewrite.Parser.parse (Parser.java:41)
    at org.openrewrite.maven.MavenMojoProjectParser.processMainSources (MavenMojoProjectParser.java:221)
    at org.openrewrite.maven.MavenMojoProjectParser.listSourceFiles (MavenMojoProjectParser.java:135)
    at org.openrewrite.maven.AbstractRewriteMojo.listResults (AbstractRewriteMojo.java:211)
    at org.openrewrite.maven.AbstractRewriteRunMojo.execute (AbstractRewriteRunMojo.java:48)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

Best I can tell this fails on Attr line 404.

timtebeek commented 10 months ago

No longer reproducible.