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

Eric Milles updated GROOVY-7797:
--------------------------------
    Labels: traits  (was: )

> Private trait method called from within a closure has the wrong "this" context
> ------------------------------------------------------------------------------
>
>                 Key: GROOVY-7797
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7797
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.4.6
>            Reporter: Aaron Long
>            Assignee: Paul King
>            Priority: Critical
>              Labels: traits
>             Fix For: 2.4.10
>
>
> Calling a private trait method from within a closure results in a 
> MethodMissing exception. It looks like within the closure, `this` is 
> referring to the implementing Class and not the instance.
> This might be related to GROOVY-7373. The problem is that calling 
> getDelegate() doesn't work as delegate also seems to have the wrong context.
> {code}
> trait MyTrait {
>     void greeter() {
>         {-> doGreeting("hi")}.call()
>     }
>     private void doGreeting(String message) { println message }  
> }
> class MyClass implements MyTrait { }
> new MyClass().greeter()
> {code}
> If you make the doGreeting method above `static`, it will work properly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to