Package groovy.transform.stc

## Class PickFirstResolver

- java.lang.Object
- - groovy.transform.stc.ClosureSignatureConflictResolver
  - - groovy.transform.stc.PickFirstResolver

-     public class PickFirstResolver
      extends ClosureSignatureConflictResolver

  Returns the first of several candidates found. This is useful if several types should be supported but only the first should be the default/inferred type. Other options in the list are obtained through explicitly typing the parameter(s).
  Since:
    2.5.0

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PickFirstResolver()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `List<ClassNode[]>` | `resolve​(List<ClassNode[]> candidates, ClassNode receiver, Expression arguments, ClosureExpression closure, MethodNode methodNode, SourceUnit sourceUnit, CompilationUnit compilationUnit, String[] options)` |

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

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

- - ### Constructor Detail

    - #### PickFirstResolver

          public PickFirstResolver()

  - ### Method Detail

    - #### resolve

          public List<ClassNode[]> resolve​(List<ClassNode[]> candidates,
                                           ClassNode receiver,
                                           Expression arguments,
                                           ClosureExpression closure,
                                           MethodNode methodNode,
                                           SourceUnit sourceUnit,
                                           CompilationUnit compilationUnit,
                                           String[] options)

      Overrides:
        `resolve` in class `ClosureSignatureConflictResolver`
      Parameters:
        `candidates` - the list of signatures as determined after applying type hints and performing initial inference calculations
        `receiver` - the receiver the method is being called on
        `arguments` - the arguments for the closure
        `closure` - the closure expression under analysis
        `methodNode` - the method for which a `Closure` parameter was annotated with `ClosureParams`
        `sourceUnit` - the source unit of the file being compiled
        `compilationUnit` - the compilation unit of the file being compiled
        `options` - the options, corresponding to the `ClosureParams.options()` found on the annotation
      Returns:
        a non-null list of signatures, where a signature corresponds to an array of class nodes, each of them matching a parameter. A list with more than one element indicates that all ambiguities haven't yet been resolved.