From b6d1eb750f274d5637e5eb63f6e03706798f0444 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Thu, 25 Jan 2024 20:29:32 -0800 Subject: [PATCH] cmd/api: include type arguments in API T[A] and T[B] are different types, but we were writing them both as just "T". Reported by Russ. Change-Id: I27db35946b6d3a1fad6c56c785fa6d850ad71d00 Reviewed-on: https://go-review.googlesource.com/c/go/+/558716 Reviewed-by: Robert Findley Auto-Submit: Matthew Dempsky LUCI-TryBot-Result: Go LUCI --- src/cmd/api/main_test.go | 10 ++++++++++ src/cmd/api/testdata/src/pkg/p4/golden.txt | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/cmd/api/main_test.go b/src/cmd/api/main_test.go index 7985055b5c..0a3d44ddd0 100644 --- a/src/cmd/api/main_test.go +++ b/src/cmd/api/main_test.go @@ -851,6 +851,16 @@ func (w *Walker) writeType(buf *bytes.Buffer, typ types.Type) { buf.WriteByte('.') } buf.WriteString(typ.Obj().Name()) + if targs := typ.TypeArgs(); targs.Len() > 0 { + buf.WriteByte('[') + for i := 0; i < targs.Len(); i++ { + if i > 0 { + buf.WriteString(", ") + } + w.writeType(buf, targs.At(i)) + } + buf.WriteByte(']') + } case *types.TypeParam: // Type parameter names may change, so use a placeholder instead. diff --git a/src/cmd/api/testdata/src/pkg/p4/golden.txt b/src/cmd/api/testdata/src/pkg/p4/golden.txt index eec0598dcd..1ceae17386 100644 --- a/src/cmd/api/testdata/src/pkg/p4/golden.txt +++ b/src/cmd/api/testdata/src/pkg/p4/golden.txt @@ -1,4 +1,4 @@ -pkg p4, func NewPair[$0 interface{ M }, $1 interface{ ~int }]($0, $1) Pair +pkg p4, func NewPair[$0 interface{ M }, $1 interface{ ~int }]($0, $1) Pair[$0, $1] pkg p4, method (Pair[$0, $1]) Second() $1 pkg p4, method (Pair[$0, $1]) First() $0 pkg p4, type Pair[$0 interface{ M }, $1 interface{ ~int }] struct -- 2.48.1