On 10.04.19 16:05, Herrendorf Johannes wrote:
Hi Groovy users,

I’m currently building a DSL in groovy and found some strange behaviour
I have no explanation for: If a method pointer with name "myMethod" is
imported as static import and a closure has a delegate with a method
"myMethod" and it's delegation strategy is set to "DELEGATION_ONLY", the
imported method is always called inside the closure - the delegate
property seems to be ignored.

two things to always remember:
* closure delegation is a runtime mechanism, it has no influence on
static compiled features
* static imports are compiled statically

The later is not because we want this, but because we have to more or
less. And it is painful. I can imagine a system where this is not
required, but that is far from easy or efficient.

[...]
import static mailinglist.SomeOtherClass.myMethod
[...]
            // dispatched to SomeOtherClass.myMethod; correct
         myMethod "Hello"
         closureStuff {
             // dispatched to SomeOtherClass.myMethod, but I expected that
                        // it's dispatched to ClosureDelegate.myMethod instead
             myMethod "Good Morning"
         }
[...]
Am I missing something or is this a bug? Thanks for your help in advance!

In short it is a limitation. I am not sure we can really do something
against that.

bye Jochen

Reply via email to