[ 
https://issues.apache.org/jira/browse/GROOVY-9035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King closed GROOVY-9035.
-----------------------------

> config script: unexpected NPE when processing compiler config DSL
> -----------------------------------------------------------------
>
>                 Key: GROOVY-9035
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9035
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.5.6
>            Reporter: Eric Milles
>            Assignee: Paul King
>            Priority: Minor
>             Fix For: 3.0.0-beta-1, 2.5.7
>
>
> I started experimenting with using config script to enable static compilation 
> by default.  I ran into GROOVY-7856 pretty much right away.  So I decided to 
> comment out my config script like this:
> {code:groovy}
> withConfig(configuration) {
>     source(classValidator: { !it.isInterface() }) { ->
>         //ast(groovy.transform.CompileStatic)
>     }
> }
> {code}
> Now I get this NPE because there is no delegate CompilationCustomizer found 
> for the SourceAwareCustomizer.
> {code}
> java.lang.NullPointerException
>       at 
> org.codehaus.groovy.control.customizers.DelegatingCustomizer.<init>(DelegatingCustomizer.java:36)
>       at 
> org.codehaus.groovy.control.customizers.SourceAwareCustomizer.<init>(SourceAwareCustomizer.java:50)
>       at 
> org.codehaus.groovy.control.customizers.builder.SourceAwareCustomizerFactory.postCompleteNode(SourceAwareCustomizerFactory.java:95)
>       at 
> org.codehaus.groovy.control.customizers.builder.CompilerCustomizationBuilder.postNodeCompletion(CompilerCustomizationBuilder.groovy:48)
>       at 
> groovy.util.FactoryBuilderSupport.dispatchNodeCall(FactoryBuilderSupport.java:903)
>       at 
> groovy.util.FactoryBuilderSupport.doInvokeMethod(FactoryBuilderSupport.java:787)
>       at 
> groovy.util.FactoryBuilderSupport.invokeMethod(FactoryBuilderSupport.java:507)
>       at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:413)
>       at 
> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:337)
>       at 
> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:64)
>       at 
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:156)
>       at 
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:176)
>       at config$_run_closure1.doCall(config.groovy:4)
>       at config$_run_closure1.doCall(config.groovy)
> ...
> {code}
> Could the SourceAwareCustomizerFactory be more forgiving and supply a "no-op" 
> CompilationCustomizer in newInstance?
> {code}
>     public Object newInstance(final FactoryBuilderSupport builder, final 
> Object name, final Object value, final Map attributes) throws 
> InstantiationException, IllegalAccessException {
>         SourceOptions data = new SourceOptions();
>         if (value instanceof CompilationCustomizer) {
>             data.delegate = (CompilationCustomizer) value;
>         }
>         // add
>         else {
>             data.delegate = new CompilationCustomizer(0) {};
>         }
>         // end
>         return data;
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to