codeconsole commented on PR #3102: URL: https://github.com/apache/groovy/pull/3102#issuecomment-6536950038
@paulk-asert Thanks. 1. **TO_SELF:** fixed in 63ca12a81d. The Object methods stay in the closure lookup for `TO_SELF`, and SC calls them on the closure, so your example compiles and returns the closure's `toString()` under SC and TC, as dynamic does. `DELEGATE_ONLY` and `OWNER_ONLY` already matched dynamic (`'d'` and `'C'`). The same commit fixes nested closures: with an owner-first strategy dynamic calls the owner closure's own method, while the PR went on out to the class or the outer delegate, and a closure nested in a `TO_SELF` closure even threw a `ClassCastException`. Covered by `testClosureObjectMethodResolveStrategy` (TC and SC). 2. **4.0 claim:** you're right. The description now has your table, says this lines SC up with 6.0+ dynamic behaviour (GROOVY-11858), and recommends backporting to 6.0.x, not 5.1.x. 3. **rehydrate:** done in e01034c17f. The writer tries `getOwner()` before the closure, so `rehydrate(null, owner, null)` calls the owner's method. Covered by `testClosureObjectMethodWithoutThisObject` and the updated `testObjectMethodsInClosureWithoutThisObject`. After `dehydrate()` there is no owner either; SC calls the closure's own method there, where dynamic calls it on `null` (the description says so). Also merged master (8d1b545714); it conflicted with GROOVY-12574 in `StaticInvocationWriter`, and both changes are kept. `MethodReferenceTest.testMethodReferencesInStaticAndDefaultMethodsOfInterface` fails on master itself since #3056; #3116 fixes it. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
