rewrite icon indicating copy to clipboard operation
rewrite copied to clipboard

XmlParserVisitor NPE when ElementContext#Name has a null TerminalNode

Open pway99 opened this issue 3 years ago • 1 comments

Discovered while testing controlflow statement formatting on https://github.com/apache/royale-compiler/

[ERROR] Error parsing
java.lang.IllegalStateException: compiler/src/test/resources/swfdumps/as_ASNamespaceTests_ASNamespace_custom_swfdump.xml Cannot invoke "org.antlr.v4.runtime.tree.TerminalNode.getText()" because "n" is null
    at org.openrewrite.xml.XmlParser.lambda$parseInputs$0 (XmlParser.java:75)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1625)
    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.xml.XmlParser.parseInputs (XmlParser.java:81)
    at org.openrewrite.Parser.parse (Parser.java:41)
    at org.openrewrite.maven.ResourceParser.parseSourceFiles (ResourceParser.java:150)
    at org.openrewrite.maven.ResourceParser.parse (ResourceParser.java:59)
    at org.openrewrite.maven.MavenMojoProjectParser.processTestSources (MavenMojoProjectParser.java:273)
    at org.openrewrite.maven.MavenMojoProjectParser.listSourceFiles (MavenMojoProjectParser.java:137)
    at org.openrewrite.maven.AbstractRewriteMojo.listResults (AbstractRewriteMojo.java:210)
    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.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    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:305)
    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:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    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 invoke "org.antlr.v4.runtime.tree.TerminalNode.getText()" because "n" is null
    at org.openrewrite.xml.internal.XmlParserVisitor.lambda$visitElement$12 (XmlParserVisitor.java:247)
    at org.openrewrite.xml.internal.XmlParserVisitor.convert (XmlParserVisitor.java:371)
    at org.openrewrite.xml.internal.XmlParserVisitor.lambda$visitElement$13 (XmlParserVisitor.java:247)
    at org.openrewrite.xml.internal.XmlParserVisitor.convert (XmlParserVisitor.java:362)
    at org.openrewrite.xml.internal.XmlParserVisitor.visitElement (XmlParserVisitor.java:219)
    at org.openrewrite.xml.internal.XmlParserVisitor.lambda$visitDocument$0 (XmlParserVisitor.java:73)
    at org.openrewrite.xml.internal.XmlParserVisitor.convert (XmlParserVisitor.java:362)
    at org.openrewrite.xml.internal.XmlParserVisitor.visitDocument (XmlParserVisitor.java:63)
    at org.openrewrite.xml.XmlParser.lambda$parseInputs$0 (XmlParser.java:68)
    at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:197)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining (ArrayList.java:1625)
    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.xml.XmlParser.parseInputs (XmlParser.java:81)
    at org.openrewrite.Parser.parse (Parser.java:41)
    at org.openrewrite.maven.ResourceParser.parseSourceFiles (ResourceParser.java:150)
    at org.openrewrite.maven.ResourceParser.parse (ResourceParser.java:59)
    at org.openrewrite.maven.MavenMojoProjectParser.processTestSources (MavenMojoProjectParser.java:273)
    at org.openrewrite.maven.MavenMojoProjectParser.listSourceFiles (MavenMojoProjectParser.java:137)
    at org.openrewrite.maven.AbstractRewriteMojo.listResults (AbstractRewriteMojo.java:210)
    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.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    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:305)
    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:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    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)

pway99 avatar Sep 23 '22 20:09 pway99

Update: I took a look at the ANTLR preview for the source.

The source of the NPE is a parsing issue when an element is detected here.

The parsing issue causes malformed XML, which results in an NPE.

traceyyoshima avatar Oct 25 '22 00:10 traceyyoshima