[ 
https://issues.apache.org/jira/browse/GROOVY-9368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17018240#comment-17018240
 ] 

Daniel Sun commented on GROOVY-9368:
------------------------------------

Please try to check  with the following code:

{code:java}
jointCompilationOptions.isEmpty()
{code}


> Breaking change regarding jointCompilationOptions
> -------------------------------------------------
>
>                 Key: GROOVY-9368
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9368
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 3.0.0-rc-3
>            Reporter: Björn Kautler
>            Priority: Major
>
> Actually this could just be a question, then sorry.
>  But I have the strong feeling that this change was unintended.
> The Spock AST transformations complain if a specification has a constructor, 
> as this is not what a user should do.
> In case of joint compilation though Groovy adds a no-arg constructor.
>  Before Groovy 1.7 this was marked as synthetic and could thus be excluded 
> from the check.
> After 1.7 this was changed to additionally allow a public no-arg constructor 
> if joint compilation is used to heuristically find this situation.
> To detect joint compilation it is checked whether 
> {{org.codehaus.groovy.control.CompilerConfiguration-getJointCompilationOptions}}
>  returns {{null}} or not.
> In Groovy 2 this method only return non-{{null}} if joint compilation is used.
>  In Groovy 3 this changed.
>  The field still has a JavaDoc comment saying {{options for joint compilation 
> (null by default == no joint compilation)}}, but the method never had such a 
> guarantee in its JavaDoc and now the field is always set in the constructor, 
> but only filled if joint comiplation is used which breaks the recognition 
> code of course.
> So is the correct way to now check for {{null}} or empty, or is this actually 
> a regression and the method should still return {{null}} for plain 
> compilation? Maybe it would also make sense to document either way at the 
> method or to provide a dedicated method that returns whether joint 
> compilation is used.
> (Actually even better would be a way to safely recognize constructors added 
> by the compiler.)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to