Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.0-alpha-4, 2.5.6
-
None
-
None
Description
In the example script below, the use of the "owner" qualifier causes an error. Replace with "delegate" and no error. Disable static compilation and no error.
class C1 { void m() { print 'outer delegate' } } class C2 { void m() { print 'inner delegate' } } void outer(@DelegatesTo(value = C1) Closure block) { block.delegate = new C1() block() } void inner(@DelegatesTo(value = C2, strategy = Closure.DELEGATE_FIRST) Closure block) { block.delegate = new C2() block() } @groovy.transform.CompileStatic // comment out and script prints "outer delegate" as expected void test() { outer { inner { owner.m() // "Cannot find matching method Script#m(). Please check if the declared type is right and if the method exists." // replace "owner" with "delegate" and CompileStatic has no error and prints "inner delegate" as expected } } } test()