typeparams

package
v0.0.0-...-478cd7b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2022 License: BSD-3-Clause Imports: 3 Imported by: 0

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

View Source
const Enabled = false

Enabled reports whether type parameters are enabled in the current build environment.

Variables

This section is empty.

Functions

func ForFuncType

func ForFuncType(*ast.FuncType) *ast.FieldList

ForFuncType returns an empty field list, as type parameters are not supported at this Go version.

func ForTypeSpec

func ForTypeSpec(*ast.TypeSpec) *ast.FieldList

ForTypeSpec returns an empty field list, as type parameters on not supported at this Go version.

func InitInstanceInfo

func InitInstanceInfo(*types.Info)

InitInstanceInfo is a noop at this Go version.

func Instantiate

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

func IsComparable(*types.Interface) bool

IsComparable returns false, as no interfaces are type-restricted at this Go version.

func IsConstraint

func IsConstraint(*types.Interface) bool

IsConstraint returns false, as no interfaces are type-restricted at this Go version.

func NamedTypeOrigin

func NamedTypeOrigin(named *types.Named) types.Type

NamedTypeOrigin is the identity method at this Go version.

func SetForNamed

func SetForNamed(_ *types.Named, tparams []*TypeParam)

SetForNamed panics if tparams is non-empty.

func SetForSignature

func SetForSignature(_ *types.Signature, tparams []*TypeParam)

SetForSignature panics if tparams is non-empty.

func SetRecvTypeParams

func SetRecvTypeParams(sig *types.Signature, rparams []*TypeParam)

SetRecvTypeParams panics if rparams is non-empty.

func SetTypeParamConstraint

func SetTypeParamConstraint(tparam *TypeParam, constraint types.Type)

SetTypeParamConstraint is unsupported at this Go version, and panics.

Types

type Environment

type Environment struct{}

Environment is a placeholder type, as type parameters are not supported at this Go version.

type IndexExprData

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

func GetIndexExprData(n ast.Node) *IndexExprData

GetIndexExprData extracts data from *ast.IndexExpr nodes. For other nodes, GetIndexExprData returns nil.

type Term

type Term struct{}

Term is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.

func NewTerm

func NewTerm(tilde bool, typ types.Type) *Term

NewTerm is unsupported at this Go version, and panics.

func (*Term) String

func (*Term) String() string

func (*Term) Tilde

func (*Term) Tilde() bool

func (*Term) Type

func (*Term) Type() types.Type

func (*Term) Underlying

func (*Term) Underlying() types.Type

type TypeList

type TypeList struct{}

TypeList is a placeholder for an empty type list.

func GetInstance

func GetInstance(*types.Info, *ast.Ident) (*TypeList, types.Type)

GetInstance returns nothing, as type parameters are not supported at this Go version.

func NamedTypeArgs

func NamedTypeArgs(*types.Named) *TypeList

NamedTypeArgs returns nil.

func (*TypeList) At

func (*TypeList) At(int) types.Type

func (*TypeList) Len

func (*TypeList) Len() int

type TypeParam

type TypeParam struct{ types.Type }

TypeParam is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.

func NewTypeParam

func NewTypeParam(name *types.TypeName, constraint types.Type) *TypeParam

NewTypeParam is unsupported at this Go version, and panics.

func (*TypeParam) Constraint

func (*TypeParam) Constraint() types.Type

func (*TypeParam) Obj

func (*TypeParam) Obj() *types.TypeName

type TypeParamList

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

func RecvTypeParams(sig *types.Signature) *TypeParamList

RecvTypeParams returns a nil slice.

func (*TypeParamList) At

func (*TypeParamList) At(int) *TypeParam

func (*TypeParamList) Len

func (*TypeParamList) Len() int

type Union

type Union struct{ types.Type }

Union is a placeholder type, as type parameters are not supported at this Go version. Its methods panic on use.

func NewUnion

func NewUnion(terms []*Term) *Union

NewUnion is unsupported at this Go version, and panics.

func (*Union) Len

func (*Union) Len() int

func (*Union) Term

func (*Union) Term(i int) *Term

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL