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:
parent
7a6d64fed6
commit
4fbb5c8666
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user