[ 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)