You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (Jira)" <ji...@apache.org> on 2022/11/28 20:41:00 UTC
[jira] [Commented] (GROOVY-10760) NPE in LocatedMessage suppresses errorCollector output
[ https://issues.apache.org/jira/browse/GROOVY-10760?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640251#comment-17640251 ]
Eric Milles commented on GROOVY-10760:
--------------------------------------
New method in 4.0.7 to help create warning for AST: {{org.codehaus.groovy.control.SourceUnit#addWarning(String, ASTNode)}}
> NPE in LocatedMessage suppresses errorCollector output
> ------------------------------------------------------
>
> Key: GROOVY-10760
> URL: https://issues.apache.org/jira/browse/GROOVY-10760
> Project: Groovy
> Issue Type: Bug
> Components: Compiler
> Affects Versions: 4.0.5
> Reporter: Christopher Smith
> Priority: Major
>
> In an AST transformation, I'm using this check to avoid duplicating a class definition:
> {code}
> if (source.AST.unit.getClass(fqcn)) {
> source.errorCollector.addWarning(LIKELY_ERRORS, "class $fqcn already exists", source.CST, source)
> return
> }
> {code}
> This can (sometimes?) trigger an exception in groovyc:
> {code}
> [ERROR] Error executing Maven.
> java.lang.NullPointerException
> at org.codehaus.groovy.control.messages.LocatedMessage.write (LocatedMessage.java:55)
> at org.codehaus.groovy.control.messages.WarningMessage.write (WarningMessage.java:87)
> at org.codehaus.groovy.control.ErrorCollector.write (ErrorCollector.java:303)
> at org.codehaus.groovy.control.ErrorCollector.write (ErrorCollector.java:322)
> at org.codehaus.groovy.control.MultipleCompilationErrorsException.getMessage (MultipleCompilationErrorsException.java:60)
> at org.apache.maven.exception.DefaultExceptionHandler.getMessage (DefaultExceptionHandler.java:277)
> at org.apache.maven.exception.DefaultExceptionHandler.handle (DefaultExceptionHandler.java:124)
> at org.apache.maven.exception.DefaultExceptionHandler.handleException (DefaultExceptionHandler.java:96)
> at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
> 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:62)
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke (Method.java:566)
> 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)
> {code}
> This seems to happen only when there are multiple messages to be printed; the message printed by this line prints successfully in the case of a single message. (The only other use of the error collector is a plain call to {{errorCollector.addException(ex, source)}}.)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)