Documentation
¶
Overview ¶
Package typeparams provides functions to work indirectly with type parameter data stored in go/ast and go/types objects, while these API are guarded by a build constraint.
This package exists to make it easier for tools to work with generic code, while also compiling against older Go versions.
Index ¶
- Constants
- func ForFuncType(*ast.FuncType) *ast.FieldList
- func ForTypeSpec(*ast.TypeSpec) *ast.FieldList
- func InitInstanceInfo(*types.Info)
- func Instantiate(env *Environment, typ types.Type, targs []types.Type, validate bool) (types.Type, error)
- func IsComparable(*types.Interface) bool
- func IsConstraint(*types.Interface) bool
- func NamedTypeOrigin(named *types.Named) types.Type
- func SetForNamed(_ *types.Named, tparams []*TypeParam)
- func SetForSignature(_ *types.Signature, tparams []*TypeParam)
- func SetRecvTypeParams(sig *types.Signature, rparams []*TypeParam)
- func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type)
- type Environment
- type IndexExprData
- type Term
- type TypeList
- type TypeParam
- type TypeParamList
- type Union
Constants ¶
const Enabled = false
Enabled reports whether type parameters are enabled in the current build environment.
Variables ¶
This section is empty.
Functions ¶
func ForFuncType ¶ added in v0.1.7
ForFuncType returns an empty field list, as type parameters are not supported at this Go version.
func ForTypeSpec ¶ added in v0.1.7
ForTypeSpec returns an empty field list, as type parameters on not supported at this Go version.
func InitInstanceInfo ¶ added in v0.1.7
InitInstanceInfo is a noop at this Go version.
func Instantiate ¶ added in v0.1.6
func Instantiate(env *Environment, typ types.Type, targs []types.Type, validate bool) (types.Type, error)
Instantiate is unsupported on this Go version, and panics.
func IsComparable ¶
IsComparable returns false, as no interfaces are type-restricted at this Go version.
func IsConstraint ¶
IsConstraint returns false, as no interfaces are type-restricted at this Go version.
func NamedTypeOrigin ¶ added in v0.1.7
NamedTypeOrigin is the identity method at this Go version.
func SetForNamed ¶ added in v0.1.6
SetForNamed panics if tparams is non-empty.
func SetForSignature ¶ added in v0.1.6
SetForSignature panics if tparams is non-empty.
func SetRecvTypeParams ¶ added in v0.1.6
SetRecvTypeParams panics if rparams is non-empty.
func SetTypeParamConstraint ¶ added in v0.1.6
SetTypeParamConstraint is unsupported at this Go version, and panics.
Types ¶
type Environment ¶ added in v0.1.6
type Environment struct{}
Environment is a placeholder type, as type parameters are not supported at this Go version.
type IndexExprData ¶ added in v0.1.6
type IndexExprData struct { X ast.Expr // expression Lbrack token.Pos // position of "[" Indices []ast.Expr // index expressions Rbrack token.Pos // position of "]" }
A IndexExprData holds data from both ast.IndexExpr and the new ast.MultiIndexExpr, which was introduced in Go 1.18.
func GetIndexExprData ¶ added in v0.1.6
func GetIndexExprData(n ast.Node) *IndexExprData
GetIndexExprData extracts data from *ast.IndexExpr nodes. For other nodes, GetIndexExprData returns nil.
type Term ¶ added in v0.1.6
type Term struct{}
Term is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.
func (*Term) Underlying ¶ added in v0.1.7
type TypeList ¶ added in v0.1.6
type TypeList struct{}
TypeList is a placeholder for an empty type list.
func GetInstance ¶ added in v0.1.7
GetInstance returns nothing, as type parameters are not supported at this Go version.
func NamedTypeArgs ¶ added in v0.1.6
NamedTypeArgs returns nil.
type TypeParam ¶ added in v0.1.6
TypeParam is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.
func NewTypeParam ¶ added in v0.1.6
NewTypeParam is unsupported at this Go version, and panics.
func (*TypeParam) Constraint ¶ added in v0.1.7
type TypeParamList ¶ added in v0.1.6
type TypeParamList struct{}
TypeParamList is a placeholder for an empty type parameter list.
func ForNamed ¶
func ForNamed(*types.Named) *TypeParamList
ForNamed returns an empty type parameter list, as type parameters are not supported at this Go version.
func ForSignature ¶
func ForSignature(*types.Signature) *TypeParamList
ForSignature returns an empty slice.
func RecvTypeParams ¶ added in v0.1.6
func RecvTypeParams(sig *types.Signature) *TypeParamList
RecvTypeParams returns a nil slice.
func (*TypeParamList) At ¶ added in v0.1.6
func (*TypeParamList) At(int) *TypeParam
func (*TypeParamList) Len ¶ added in v0.1.6
func (*TypeParamList) Len() int