mirror of
https://github.com/golang/go
synced 2024-11-23 00:20:12 -07:00
[dev.typeparams] cmd/compile/internal/types2: minor cleanup of writeTParamList
Change-Id: Iaa58b17ad65e93548bb3da8231e0cb6da0c48105 Reviewed-on: https://go-review.googlesource.com/c/go/+/339903 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
0811108670
commit
c3b57af8bc
@ -83,7 +83,7 @@ func (check *Checker) infer(pos syntax.Pos, tparams []*TypeName, targs []Type, p
|
||||
|
||||
// Substitute type arguments for their respective type parameters in params,
|
||||
// if any. Note that nil targs entries are ignored by check.subst.
|
||||
// TODO(gri) Can we avoid this (we're setting known type argumemts below,
|
||||
// TODO(gri) Can we avoid this (we're setting known type arguments below,
|
||||
// but that doesn't impact the isParameterized check for now).
|
||||
if params.Len() > 0 {
|
||||
smap := makeSubstMap(tparams, targs)
|
||||
|
@ -246,23 +246,27 @@ func writeTParamList(buf *bytes.Buffer, list []*TypeName, qf Qualifier, visited
|
||||
buf.WriteString("[")
|
||||
var prev Type
|
||||
for i, p := range list {
|
||||
// TODO(gri) support 'any' sugar here.
|
||||
var b Type = &emptyInterface
|
||||
if t, _ := p.typ.(*TypeParam); t != nil && t.bound != nil {
|
||||
b = t.bound
|
||||
// Determine the type parameter and its constraint.
|
||||
// list is expected to hold type parameter names,
|
||||
// but don't crash if that's not the case.
|
||||
tpar, _ := p.typ.(*TypeParam)
|
||||
var bound Type
|
||||
if tpar != nil {
|
||||
bound = tpar.bound // should not be nil but we want to see it if it is
|
||||
}
|
||||
|
||||
if i > 0 {
|
||||
if b != prev {
|
||||
// type bound changed - write previous one before advancing
|
||||
if bound != prev {
|
||||
// bound changed - write previous one before advancing
|
||||
buf.WriteByte(' ')
|
||||
writeType(buf, prev, qf, visited)
|
||||
}
|
||||
buf.WriteString(", ")
|
||||
}
|
||||
prev = b
|
||||
prev = bound
|
||||
|
||||
if t, _ := p.typ.(*TypeParam); t != nil {
|
||||
writeType(buf, t, qf, visited)
|
||||
if tpar != nil {
|
||||
writeType(buf, tpar, qf, visited)
|
||||
} else {
|
||||
buf.WriteString(p.name)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user