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

Eric Milles edited comment on GROOVY-9554 at 6/3/20, 7:58 PM:
--------------------------------------------------------------

{{groovy.lang.Script#setProperty}} could check for a field before adding a 
property to the binding.  You could experiment with this in your script by 
overriding {{setProperty(String,Object)}}.


was (Author: emilles):
{{{{groovy.lang.Script#setProperty}} could check for a field before adding a 
property to the binding.  You could experiment with this in your script by 
overriding setProperty(String,Object).}}

> @Field variable access within closures broken
> ---------------------------------------------
>
>                 Key: GROOVY-9554
>                 URL: https://issues.apache.org/jira/browse/GROOVY-9554
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.15, 3.0.3
>            Reporter: Jochen Eddelbuettel
>            Priority: Major
>
>  
> {code:java}
> @groovy.transform.Field String abc
> binding.variables.clear()
> abc = "abc"
> println binding.hasVariable("abc")
> ["D","E","F"].each { abc += it }
> println binding.getVariable("abc")
> assert abc == "abcDEF"
> {code}
> If a variable is declared using the @Field annotation, it can be assigned to 
> in the main script body, but any assignment inside a closure (here the 
> closure used with each) ends up in the script binding instead. Assignments 
> within regular methods work fine, too. If the variables is accessed inside 
> the closure and it is not in the binding, then the value will come from the 
> field. As soon as it is in the binding, the binding variable takes precedence 
> over the field. In both cases the field declared with @Field needs to have 
> precedence over anything that is in the binding, just like local variables do.
>   
>  



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

Reply via email to