]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile/internal/types2: minor cleanup of writeTParamList
authorRobert Griesemer <gri@golang.org>
Thu, 5 Aug 2021 04:10:31 +0000 (21:10 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 6 Aug 2021 20:34:47 +0000 (20:34 +0000)
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>
src/cmd/compile/internal/types2/infer.go
src/cmd/compile/internal/types2/typestring.go

index a3772aa71313005ba3a44a86a342f96a6cc525c0..ff4bb3ea17570502a72d9fd15d4a2ef09277fac5 100644 (file)
@@ -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)
index b3675424a5bb7a9cf4bdbf24a9933f2b4bde0346..ead17ba2f3ca911af55f61b2883abf19a4098c5a 100644 (file)
@@ -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)
                }