Aaron Long created GROOVY-7797:
----------------------------------
Summary: 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.3
Reporter: Aaron Long
Priority: Critical
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.4#6332)