Package org.codehaus.groovy.transform

# Class NamedVariantASTStubber

java.lang.Object
org.codehaus.groovy.transform.AbstractASTTransformation
org.codehaus.groovy.transform.NamedVariantASTStubber

All Implemented Interfaces:
  `ASTTransformation`, `ErrorCollecting`

public class NamedVariantASTStubber extends AbstractASTTransformation
Joint-compilation stubber for `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
  Constructor
  Description
  `NamedVariantASTStubber()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `visit(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`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### NamedVariantASTStubber

    public NamedVariantASTStubber()

- ## Method Details

  - ### visit

    public void visit(ASTNode[] nodes, SourceUnit source)
    Description copied from interface: `ASTTransformation`
    The 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.