> does this mean we are currently not using indy to set properties?

I think the path for setting a property falls through past the indy path and 
into dynamic (aka ScriptBytecodeAdapter).  That could be looked at separately.  
My best guess is because of the possibility of setter overloads, it was not 
taken up into indy.

________________________________
From: Jochen Theodorou <blackd...@gmx.org>
Sent: Tuesday, July 29, 2025 5:25 PM
To: dev@groovy.apache.org <dev@groovy.apache.org>
Subject: Re: [EXT] Groovy 5 next steps

On 29.07.25 15:24, Milles, Eric (TR Technology) via dev wrote:
> I have an open PR for GROOVY-8283 that could benefit from review and
> consideration for inclusion.  This item represents a change in priority
> between public access methods and protected fields.  And the changes in
> ScriptBytecodeAdapter -- namely checking the receiver class methods for
> override -- could use another set of eyes.  I thought about the
> possibility of passing sender class through ThreadLocal or some other
> means since the getProperty API cannot change.

As far as I can tell the change should be correct. I would not use
ThreadLocal though. Java now changes all the time, so maybe my knowledge
is a bit outdated, but it used to be a quite heavy solution with lots of
problems for inlining and other things. If it is
"receiver.getClass().getMethod("getProperty", String.class).isDefault()"
you want to keep as information, then maybe ClassValue could be used
instead.

One point though... does this mean we are currently not using indy to
set properties?
https://urldefense.com/v3/__https://github.com/apache/groovy/blob/cceb3c7b944f784db7d05310c4d6d7f2d9528c59/src/main/java/org/codehaus/groovy/vmplugin/v8/Selector.java*L285__;Iw!!GFN0sa3rsbfR8OLyAw!clt0Gq00Acd2uMNSC3C_caIiNuucCL-622CLRSkx7fHQM2Sg6yGWFn33OBvzkTVvQgzzIizwZrVsndI-x393IQev$
was thought for this.

Also there is a big difference... The selector goes by @Internal,
instead of using the default modifier. Not that I find superior to the
other, but it is bad if one code does that and another code does it
different to achieve the same goal.

bye Jochen

Reply via email to