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)

Reply via email to