blob: ed744c4dba6a151623c283bbb396f4d9933ad555 [file] [log] [blame]
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build typeparams
// +build typeparams
package types
import (
"go/ast"
)
type (
Inferred = _Inferred
Sum = _Sum
TypeParam = _TypeParam
)
func NewSum(types []Type) Type { return _NewSum(types) }
func (s *Signature) TParams() []*TypeName { return s._TParams() }
func (s *Signature) SetTParams(tparams []*TypeName) { s._SetTParams(tparams) }
func (t *Interface) HasTypeList() bool { return t._HasTypeList() }
func (t *Interface) IsComparable() bool { return t._IsComparable() }
func (t *Interface) IsConstraint() bool { return t._IsConstraint() }
func (t *Named) TParams() []*TypeName { return t._TParams() }
func (t *Named) TArgs() []Type { return t._TArgs() }
func (t *Named) SetTArgs(args []Type) { t._SetTArgs(args) }
// Info is documented in api_notypeparams.go.
type Info struct {
Types map[ast.Expr]TypeAndValue
// Inferred maps calls of parameterized functions that use type inference to
// the Inferred type arguments and signature of the function called. The
// recorded "call" expression may be an *ast.CallExpr (as in f(x)), or an
// *ast.IndexExpr (s in f[T]).
Inferred map[ast.Expr]_Inferred
Defs map[*ast.Ident]Object
Uses map[*ast.Ident]Object
Implicits map[ast.Node]Object
Selections map[*ast.SelectorExpr]*Selection
Scopes map[ast.Node]*Scope
InitOrder []*Initializer
}
func getInferred(info *Info) map[ast.Expr]_Inferred {
return info.Inferred
}