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 ForFuncDecl(*ast.FuncDecl) *ast.FieldList
- func ForTypeDecl(*ast.TypeSpec) *ast.FieldList
- func GetInferred(*types.Info, ast.Expr) ([]types.Type, *types.Signature)
- func InitInferred(*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 NamedTypeArgs(*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 ForFuncDecl ¶
ForFuncDecl returns an empty field list, as type parameters are not supported at this Go version.
func ForTypeDecl ¶
ForTypeDecl returns an empty field list, as type parameters on not supported at this Go version.
func GetInferred ¶
GetInferred returns nothing, as type parameters are not supported 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 NamedTypeArgs ¶ added in v0.1.6
NamedTypeArgs extracts the (possibly empty) type argument list from named.
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
Term is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.
type TypeList ¶ added in v0.1.6
type TypeList struct{}
TypeList is a placeholder for an empty type list.
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.
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