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

Eric Milles updated GROOVY-8375:
--------------------------------
    Description: 
The sample below outputs "value" as is.  When {{cl.resolveStrategy = 
Closure.DELEGATE_FIRST}} is added before {{cl()}}, it outputs "null" when I 
would expect "value" since that's available from owner.  When 
{{cl.resolveStrategy = Closure.DELEGATE_ONLY}} is added instead, it outputs 
"null" when I would expect a missing property exception.

{code}
class Test {
  def prop = 'value'
  def meth() {
    def cl = { -> println prop }
    cl.delegate = [:]
    cl()
  }
}
new Test().meth()
{code}

This was run using Groovy Web Console.

  was:
The sample below outputs "value" as is.  When {cl.resolveStrategy = 
Closure.DELEGATE_FIRST} is added before {cl()}, it outputs {null} when I would 
expect {value} since that's available from owner.  When {cl.resolveStrategy = 
Closure.DELEGATE_ONLY} is added instead, it outputs {null} when I would expect 
missing property exception.

{code}
class Test {
  def prop = 'value'
  def meth() {
    def cl = { -> println prop }
    cl.delegate = [:]
    cl()
  }
}
new Test().meth()
{code}

This was run using Groovy Web Console.


> Closure resolve strategy DELEGATE_FIRST and DELEGATE_ONLY behave oddly when 
> delegate is set
> -------------------------------------------------------------------------------------------
>
>                 Key: GROOVY-8375
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8375
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Eric Milles
>
> The sample below outputs "value" as is.  When {{cl.resolveStrategy = 
> Closure.DELEGATE_FIRST}} is added before {{cl()}}, it outputs "null" when I 
> would expect "value" since that's available from owner.  When 
> {{cl.resolveStrategy = Closure.DELEGATE_ONLY}} is added instead, it outputs 
> "null" when I would expect a missing property exception.
> {code}
> class Test {
>   def prop = 'value'
>   def meth() {
>     def cl = { -> println prop }
>     cl.delegate = [:]
>     cl()
>   }
> }
> new Test().meth()
> {code}
> This was run using Groovy Web Console.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to