mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile/internal/types2: use a TypeList type to hold type arguments
This is a port of CL 343933 from go/types with the necessary adjustments in the compiler. With this CL type parameters and type lists are now held in TParamList and TypeList data types which don't expose the internal representation. Change-Id: I6d60881b5db995dbc04ed3f4a96e8b5d41f83969 Reviewed-on: https://go-review.googlesource.com/c/go/+/344615 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Dan Scales <danscales@google.com>
This commit is contained in:
parent
1ff0554b53
commit
b1cdf860dd
15 changed files with 128 additions and 85 deletions
|
|
@ -360,9 +360,9 @@ func (g *irgen) selectorExpr(pos src.XPos, typ types2.Type, expr *syntax.Selecto
|
|||
// selinfo.Targs() are the types used to
|
||||
// instantiate the type of receiver
|
||||
targs2 := getTargs(selinfo)
|
||||
targs := make([]ir.Node, len(targs2))
|
||||
for i, targ2 := range targs2 {
|
||||
targs[i] = ir.TypeNode(g.typ(targ2))
|
||||
targs := make([]ir.Node, targs2.Len())
|
||||
for i := range targs {
|
||||
targs[i] = ir.TypeNode(g.typ(targs2.At(i)))
|
||||
}
|
||||
|
||||
// Create function instantiation with the type
|
||||
|
|
@ -386,7 +386,7 @@ func (g *irgen) selectorExpr(pos src.XPos, typ types2.Type, expr *syntax.Selecto
|
|||
}
|
||||
|
||||
// getTargs gets the targs associated with the receiver of a selected method
|
||||
func getTargs(selinfo *types2.Selection) []types2.Type {
|
||||
func getTargs(selinfo *types2.Selection) *types2.TypeList {
|
||||
r := deref2(selinfo.Recv())
|
||||
n := types2.AsNamed(r)
|
||||
if n == nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue