1
0
mirror of https://github.com/golang/go synced 2024-11-22 20:24:47 -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
// for a parameterized function call that uses type inference.
type Inferred struct {
TArgs []Type
TArgs *TypeList
Sig *Signature
}

View File

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