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]

Reply via email to