Class NamedVariantASTStubber
- All Implemented Interfaces:
ASTTransformation,ErrorCollecting
NamedVariant. Emits a placeholder
Map-arg variant alongside the user-declared method or constructor so
Java consumers can call the named-arg form against the joint-compilation
stub.
The signature emitted is the simple "all params named" shape:
returnType methodName(Map namedArgs) for methods, or
ClassName(Map namedArgs) for constructors. Mixed cases —
where some parameters carry @NamedParam / @NamedDelegate
and some remain positional — produce a richer signature at runtime that
the stubber does not yet reproduce; Java consumers in those cases see
only the single Map-arg variant in the stub. That is a strict subset of
the runtime, so call sites that match it work either way; call sites
needing positional-plus-map don't compile against the stub.
Originally listed in Tier 3 because a @NamedVariant target
"added by another transform" wouldn't be visible at CONVERSION. In
practice transforms compose this kind of variant via @NamedParam
on parameters of an existing method, and direct user-written
@NamedVariant on a hand-written method has the target visible
at CONVERSION. The Tier 3 deferral was overly cautious; this stubber
covers the common case.
- Since:
- 6.0.0
-
Field Summary
Fields inherited from class org.codehaus.groovy.transform.AbstractASTTransformation
RETENTION_CLASSNODE, sourceUnit -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidvisit(ASTNode[] nodes, SourceUnit source) The method is invoked when an AST Transformation is active.Methods inherited from class org.codehaus.groovy.transform.AbstractASTTransformation
addError, checkIncludeExcludeUndefinedAware, checkIncludeExcludeUndefinedAware, checkNotInterface, checkPropertyList, checkPropertyList, checkPropertyList, copyAnnotatedNodeAnnotations, copyAnnotatedNodeAnnotations, deemedInternal, deemedInternalName, getAnnotationName, getMemberClassList, getMemberClassValue, getMemberClassValue, getMemberIntValue, getMemberStringList, getMemberStringValue, getMemberStringValue, getMemberValue, hasAnnotation, init, markAsInternal, memberHasValue, shouldSkip, shouldSkip, shouldSkip, shouldSkipOnDescriptorUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, tokenize
-
Constructor Details
-
NamedVariantASTStubber
public NamedVariantASTStubber()
-
-
Method Details
-
visit
Description copied from interface:ASTTransformationThe method is invoked when an AST Transformation is active. For local transformations, it is invoked once each time the local annotation is encountered. For global transformations, it is invoked once for every source unit, which is typically a source file.- Parameters:
nodes- The ASTnodes when the call was triggered. Element 0 is the AnnotationNode that triggered this annotation to be activated. Element 1 is the AnnotatedNode decorated, such as a MethodNode or ClassNode. For global transformations it is usually safe to ignore this parameter.source- The source unit being compiled. The source unit may contain several classes. For global transformations, information about the AST can be retrieved from this object.
-