Package groovy.transform.stc

# Class ClosureSignatureConflictResolver

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

Direct Known Subclasses:
  `PickFirstResolver`

public class ClosureSignatureConflictResolver extends Object
If multiple candidate signatures are found after applying type hints, a conflict resolver can attempt to resolve the ambiguity.

Since:
  2.5.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ClosureSignatureConflictResolver()`

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

  - ### ClosureSignatureConflictResolver

    public ClosureSignatureConflictResolver()

- ## Method Details

  - ### resolve

    public List<ClassNode[]> resolve(List<ClassNode[]> candidates, ClassNode receiver, Expression arguments, ClosureExpression closure, MethodNode methodNode, SourceUnit sourceUnit, CompilationUnit compilationUnit, String[] options)
    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.