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

  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 Details

  - ### PickFirstResolver

    public PickFirstResolver()

- ## Method Details

  - ### 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.