1
0
mirror of https://github.com/golang/go synced 2024-11-26 17:46:57 -07:00

go/types: use TypeList in the Inferred struct

This is for consistency with how we report TArgs elsewhere, and in case
we ever want to share an internal slice with inference reporting.

Change-Id: Ia8b705a155f4f82bd8da8dc2457289810f875f5e
Reviewed-on: https://go-review.googlesource.com/c/go/+/343934
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
This commit is contained in:
Robert Findley 2021-08-20 10:19:12 -04:00
parent 7a6d64fed6
commit 4fbb5c8666
3 changed files with 8 additions and 7 deletions

View File

@ -363,7 +363,7 @@ func (tv TypeAndValue) HasOk() bool {
// Inferred reports the Inferred type arguments and signature // Inferred reports the Inferred type arguments and signature
// for a parameterized function call that uses type inference. // for a parameterized function call that uses type inference.
type Inferred struct { type Inferred struct {
TArgs []Type TArgs *TypeList
Sig *Signature Sig *Signature
} }

View File

@ -482,7 +482,7 @@ func TestInferredInfo(t *testing.T) {
} }
// look for inferred type arguments and signature // look for inferred type arguments and signature
var targs []Type var targs *TypeList
var sig *Signature var sig *Signature
for call, inf := range info.Inferred { for call, inf := range info.Inferred {
var fun ast.Expr var fun ast.Expr
@ -506,11 +506,12 @@ func TestInferredInfo(t *testing.T) {
} }
// check that type arguments are correct // check that type arguments are correct
if len(targs) != len(test.targs) { if targs.Len() != len(test.targs) {
t.Errorf("package %s: got %d type arguments; want %d", name, len(targs), len(test.targs)) t.Errorf("package %s: got %d type arguments; want %d", name, targs.Len(), len(test.targs))
continue continue
} }
for i, targ := range targs { for i := 0; i < targs.Len(); i++ {
targ := targs.At(i)
if got := targ.String(); got != test.targs[i] { if got := targ.String(); got != test.targs[i] {
t.Errorf("package %s, %d. type argument: got %s; want %s", name, i, got, test.targs[i]) t.Errorf("package %s, %d. type argument: got %s; want %s", name, i, got, test.targs[i])
continue continue

View File

@ -406,8 +406,8 @@ func (check *Checker) recordCommaOkTypes(x ast.Expr, a [2]Type) {
func (check *Checker) recordInferred(call ast.Expr, targs []Type, sig *Signature) { func (check *Checker) recordInferred(call ast.Expr, targs []Type, sig *Signature) {
assert(call != nil) assert(call != nil)
assert(sig != nil) assert(sig != nil)
if m := check.Info.Inferred; m != nil { if m := check.Inferred; m != nil {
m[call] = Inferred{targs, sig} m[call] = Inferred{&TypeList{targs}, sig}
} }
} }