On 26.09.2018 12:58, Paul King wrote:
I shouldn't try to respond to emails while rushing between conference sessions. Refreshed my memory and yes, the current provisions for 2.4 compatibility don't really help. I'll see if Jochen has some ideas on how we could improve that.

I guess we have to compare

https://github.com/apache/groovy/blob/e16728b91601573ee18475ec5dee5355817f670c/src/main/org/codehaus/groovy/transform/ImmutableASTTransformation.java#L738

and

https://github.com/apache/groovy/blob/9914ae4a0b4273a5a4cb8822699a9b2dbb3c3215/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java#L352

which tells me the knownImmutableClasses part is gone from @Immutable and the 2.5.x version has no way of getting this information anymore, since this is supposed to be given directly to the method.

Bad, but let's continue

https://github.com/ajoberstar/grgit/issues/237 talks about for example the Commit.groovy, that can be found here: https://github.com/ajoberstar/grgit/blob/master/grgit-core/src/main/groovy/org/ajoberstar/grgit/Commit.groovy

it does have a knownImmutableClasses=[ZonedDateTime], but looking at https://github.com/apache/groovy/blob/GROOVY_2_5_X/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java#L101 it is in the list of builtinImmutables.

And the error message is of course not about that, it is about Person: https://github.com/ajoberstar/grgit/blob/master/grgit-core/src/main/groovy/org/ajoberstar/grgit/Person.groovy

And that is where I am actually stuck in understanding the issue...

if (field == null || field instanceof Enum || 
builtinOrMarkedImmutableClass(field.getClass())) {
            return field;
}

this code for the 2.4 check should have returned, because builtinOrMarkedImmutableClass checks if the class of the value for the field has an annotation named groovy.transform.Immutable, which is the case for Person (see https://github.com/apache/groovy/blob/9914ae4a0b4273a5a4cb8822699a9b2dbb3c3215/src/main/java/org/apache/groovy/ast/tools/ImmutablePropertyUtils.java#L194)

It is similar for Branch.groovy...

So what exactly is not working anymore? I am confused (and it is well too late here for looking into such an issue). Cedric, Paul, can you explain what exactly goes wrong?

bye Jochen

Reply via email to