Package: org.codehaus.groovy.transform.stc

## [Java] Enum StaticTypesMarker

- org.codehaus.groovy.transform.stc.StaticTypesMarker

-     public enum StaticTypesMarker
      extends Enum

  This enumeration is used by the AST transformations which rely on static type checking, either to store or to retrieve information from AST node metadata. The values of this enumeration are used as metadata keys.

- - ### Enum Constants Summary

    Enum constants classes
    Enum constant | Description
    --- | ---
    `CLOSURE_ARGUMENTS` | used to store expected closure argument types on an expression
    `COMPOUND_ASSIGN_TARGET` | GEP-15: stores the resolved compound-assignment `MethodNode` (e.g.
    `DECLARATION_INFERRED_TYPE` | in flow analysis, represents the type of the declaration node LHS
    `DELEGATION_METADATA` | used to store the delegation strategy and delegate type of a closure derived from DelegatesTo metadata
    `DIRECT_METHOD_CALL_TARGET` | used to store the MethodNode a MethodCallExpression should target
    `DYNAMIC_RESOLUTION` | call recognized by a type checking extension as a dynamic method call
    `IMPLICIT_RECEIVER` | if the receiver is implicit but not "this", store the name of the receiver (delegate or owner)
    `INFERRED_NON_NULL` | indicates a parameter or method return is known to be non-null (e.g., inferred from `@Requires`/`@Ensures` contracts)
    `INFERRED_NON_NULL_RETURN_VIOLATIONS` | list of `return null` statements recorded on a method before its body is rewritten, so a downstream checker can still report them as non-null violations
    `INFERRED_RETURN_TYPE` | used to store inferred return type for methods and closures
    `INFERRED_TYPE` | used to store type information on class nodes
    `INITIAL_EXPRESSION` | used to store the default expression for a parameter
    `LAMBDA_MARKERS` | GROOVY-11998: for an intersection cast on a lambda, method reference or closure, the additional marker interfaces to thread to `LambdaMetafactory.altMetafactory`
    `METHOD_REFERENCE_TYPE` | marks a method-reference (`::`) argument type so overload selection prefers a functional-interface parameter over a `Closure` parameter: as a call argument a method reference is coerced only to a functional interface, so a `Closure` overload does not apply (unlike assignment, where {@code Closure
    `PARAMETER_TYPE` | used to store the parameter type of method invocation on an expression
    `PRIMARY_FUNCTIONAL_TYPE` | GROOVY-11998: for an intersection-cast lambda or method reference, the SAM-bearing component picked from the intersection
    `PV_FIELDS_ACCESS` | set of private fields that are accessed from closures or inner classes
    `PV_FIELDS_MUTATION` | set of private fields that are set from closures or inner classes
    `PV_METHODS_ACCESS` | set of private methods that are accessed from closures or inner classes
    `READONLY_PROPERTY` | used to tell that a property expression refers to a read-only property
    `SUPER_MOP_METHOD_REQUIRED` | used to store the list of MOP methods that still have to be generated
    `SWITCH_CONDITION_EXPRESSION_TYPE` | used to store the condition expression type of the switch-case statement
    `TYPE` | used to store the result of StaticTypeCheckingVisitor.getType

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Enum` | `compareTo, compareTo, describeConstable, equals, getClass, getDeclaringClass, hashCode, name, notify, notifyAll, ordinal, toString, valueOf, wait, wait, wait`

- - ### Enum Constant Detail

    - #### StaticTypesMarker CLOSURE_ARGUMENTS

      used to store expected closure argument types on an expression

    - #### StaticTypesMarker COMPOUND_ASSIGN_TARGET

      GEP-15: stores the resolved compound-assignment `MethodNode` (e.g. `plusAssign`) on a `BinaryExpression` when the static type checker has located one, signalling to codegen that the receiver should be mutated in place rather than `x = x.plus(y)`-desugared

    - #### StaticTypesMarker DECLARATION_INFERRED_TYPE

      in flow analysis, represents the type of the declaration node LHS

    - #### StaticTypesMarker DELEGATION_METADATA

      used to store the delegation strategy and delegate type of a closure derived from DelegatesTo metadata

    - #### StaticTypesMarker DIRECT_METHOD_CALL_TARGET

      used to store the MethodNode a MethodCallExpression should target

    - #### StaticTypesMarker DYNAMIC_RESOLUTION

      call recognized by a type checking extension as a dynamic method call

    - #### StaticTypesMarker IMPLICIT_RECEIVER

      if the receiver is implicit but not "this", store the name of the receiver (delegate or owner)

    - #### StaticTypesMarker INFERRED_NON_NULL

      indicates a parameter or method return is known to be non-null (e.g., inferred from `@Requires`/`@Ensures` contracts)

    - #### StaticTypesMarker INFERRED_NON_NULL_RETURN_VIOLATIONS

      list of `return null` statements recorded on a method before its body is rewritten, so a downstream checker can still report them as non-null violations

    - #### StaticTypesMarker INFERRED_RETURN_TYPE

      used to store inferred return type for methods and closures

    - #### StaticTypesMarker INFERRED_TYPE

      used to store type information on class nodes

    - #### StaticTypesMarker INITIAL_EXPRESSION

      used to store the default expression for a parameter

    - #### StaticTypesMarker LAMBDA_MARKERS

      GROOVY-11998: for an intersection cast on a lambda, method reference or closure, the additional marker interfaces to thread to `LambdaMetafactory.altMetafactory`

    - #### StaticTypesMarker METHOD_REFERENCE_TYPE

      marks a method-reference (`::`) argument type so overload selection prefers a functional-interface parameter over a `Closure` parameter: as a call argument a method reference is coerced only to a functional interface, so a `Closure` overload does not apply (unlike assignment, where `Closure<?> c = Foo::bar` is valid)

    - #### StaticTypesMarker PARAMETER_TYPE

      used to store the parameter type of method invocation on an expression

    - #### StaticTypesMarker PRIMARY_FUNCTIONAL_TYPE

      GROOVY-11998: for an intersection-cast lambda or method reference, the SAM-bearing component picked from the intersection

    - #### StaticTypesMarker PV_FIELDS_ACCESS

      set of private fields that are accessed from closures or inner classes

    - #### StaticTypesMarker PV_FIELDS_MUTATION

      set of private fields that are set from closures or inner classes

    - #### StaticTypesMarker PV_METHODS_ACCESS

      set of private methods that are accessed from closures or inner classes

    - #### StaticTypesMarker READONLY_PROPERTY

      used to tell that a property expression refers to a read-only property

    - #### StaticTypesMarker SUPER_MOP_METHOD_REQUIRED

      used to store the list of MOP methods that still have to be generated

    - #### StaticTypesMarker SWITCH_CONDITION_EXPRESSION_TYPE

      used to store the condition expression type of the switch-case statement

    - #### StaticTypesMarker TYPE

      used to store the result of StaticTypeCheckingVisitor.getType