package function import ( "github.com/zclconf/go-cty/cty" ) // Parameter represents a parameter to a function. type Parameter struct { // Name is an optional name for the argument. This package ignores this // value, but callers may use it for documentation, etc. Name string // A type that any argument for this parameter must conform to. // cty.DynamicPseudoType can be used, either at top-level or nested // in a parameterized type, to indicate that any type should be // permitted, to allow the definition of type-generic functions. Type cty.Type // If AllowNull is set then null values may be passed into this // argument's slot in both the type-check function and the implementation // function. If not set, such values are rejected by the built-in // checking rules. AllowNull bool // If AllowUnknown is set then unknown values may be passed into this // argument's slot in the implementation function. If not set, any // unknown values will cause the function to immediately return // an unkonwn value without calling the implementation function, thus // freeing the function implementer from dealing with this case. AllowUnknown bool // If AllowDynamicType is set then DynamicVal may be passed into this // argument's slot in the implementation function. If not set, any // dynamic values will cause the function to immediately return // DynamicVal value without calling the implementation function, thus // freeing the function implementer from dealing with this case. // // Note that DynamicVal is also unknown, so in order to receive dynamic // *values* it is also necessary to set AllowUnknown. // // However, it is valid to set AllowDynamicType without AllowUnknown, in // which case a dynamic value may be passed to the type checking function // but will not make it to the *implementation* function. Instead, an // unknown value of the type returned by the type-check function will be // returned. This is suggested for functions that have a static return // type since it allows the return value to be typed even if the input // values are not, thus improving the type-check accuracy of derived // values. AllowDynamicType bool }