@GroovyASTTransformation(phase = CompilePhase.CONVERSION)
public class FinalASTStubber
extends AbstractASTTransformation
Joint-compilation stubber for Final. Flips the ACC_FINAL
modifier on the target class / field / method at CONVERSION so the stub
presents the runtime final-ness to javac.
Without this, an @Immutable (or any @Final-composed)
Groovy class compiles in joint compilation against a stub that lets Java
code declare class JavaSubclass extends ImmutableThing, which
the runtime then rejects (or breaks the immutability invariants if it
doesn't).
No metadata-key handoff is required: the full
FinalASTTransformation ORs ACC_FINAL into the modifiers
unconditionally, which is idempotent if the bit was already set by the
stubber.
Like LazyASTStubber this stubber adds no new members — it
only adjusts modifiers — so the typical addStub* +
metadata-key dance from StubberSupport doesn't apply.
| Fields inherited from class | Fields |
|---|---|
class AbstractASTTransformation |
RETENTION_CLASSNODE, sourceUnit |
| Type Params | Return Type | Name and description |
|---|---|---|
|
public void |
visit(ASTNode[] nodes, SourceUnit source) |