[jira] [Closed] (GROOVY-7797) Private trait method called from within a closure has the wrong "this" context

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Closed] (GROOVY-7797) Private trait method called from within a closure has the wrong "this" context

JIRA jira@apache.org

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

Paul King closed GROOVY-7797.
-----------------------------

> 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
>             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
(v6.3.15#6346)
Loading...