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