Hi Paul,
great to make @Immutable more fine granular / flexible :-)

what about @ImmutabilityCheckedor@ImmutableCoreinstead of @ImmutableClass ?
Cheersmg
-------- Ursprüngliche Nachricht --------Von: Paul King <[email protected]> 
Datum: 11.01.18  08:07  (GMT+01:00) An: [email protected] Betreff: Making 
@Immutable a meta-annotation 

There has been discussion on and off about making @Immutable a meta-annotation 
(annotation collector) in much the same way as @Canonical was re-vamped. (This 
is for 2.5+).
I have a preliminary PR which does this:
https://github.com/apache/groovy/pull/653

Preliminary because it still needs a bit of refactoring to reduce some 
duplication of code that exists between the normal and immutable map and tuple 
constructors. I still need to do this but that can happen transparently behind 
the scenes as an implementation detail if we don't finish it straight away. As 
well as reducing duplication, the pending refactoring will enable things like 
the pre and post options for MapConstructor and TupleConstructor which aren't 
currently working.
I am keen on any feedback at this point. In particular, while most of the 
functionality is pushed off into the collected annotations/transforms, I ended 
up with some left over checks which I kept in an annotation currently called 
@ImmutableClass. I tried various names for this class, e.g. @ImmutableBase and 
@ImmutableCheck but finally settled on @ImmutableClass since the annotation 
causes the preliminary checks to be performed but also acts as a marker 
interface for the MapConstructor and TupleConstructor transforms to do the 
alternate code needed for immutability and to indicate that a class is 
immutable when it might itself be a property of another immutable class. Let me 
know if you can think of a better name or have any other feedback.
Cheers, Paul.

Reply via email to