# Package groovy.transform.stc

## Package groovy.transform.stc Description

Static type checking support with closure signature hints and validation.

@ClosureParams provides compile-time type hints for closures. ClosureSignatureHint is the base for custom hints. Powers static type checking for higher-order functions and DSLs.

- Class Summary
  Class | Description
  --- | ---
  ClosureSignatureConflictResolver | If multiple candidate signatures are found after applying type hints, a conflict resolver can attempt to resolve the ambiguity.
  ClosureSignatureHint |
  FirstParam |
  FirstParam.Component |
  FirstParam.FirstGenericType |
  FirstParam.SecondGenericType |
  FirstParam.ThirdGenericType |
  FromAbstractTypeMethods | This signature hint uses abstract methods from some type (abstract class or interface) in order to infer the expected parameter types.
  FromString |
  MapEntryOrKeyValue |
  PickAnyArgumentHint |
  PickFirstResolver | Returns the first of several candidates found.
  SecondParam |
  SecondParam.Component |
  SecondParam.FirstGenericType |
  SecondParam.SecondGenericType |
  SecondParam.ThirdGenericType |
  SimpleType | Hint that resolves closure parameter types directly from option class names.
  SingleSignatureClosureHint | A simplified version of a ClosureSignatureHint which is suitable for monomorphic closures, that is to say closures which only respond to a single signature.
  ThirdParam |
  ThirdParam.Component |
  ThirdParam.FirstGenericType |
  ThirdParam.SecondGenericType |
  ThirdParam.ThirdGenericType |

- Exception Summary
  Exception | Description
  --- | ---
  IncorrectTypeHintException | Indicates that a ClosureParams hint declaration is invalid.

- Annotation Type Summary
  Annotation Type | Description
  --- | ---
  ClassTag | Parameter annotation marking a `Class` parameter as compiler-supplied under static compilation.
  ClosureParams | Parameter annotation aimed at helping IDEs or the static type checker to infer the parameter types of a closure.
  POJO | Marker interface to indicate that the normal GroovyObject methods should not be added.