From: Robert Griesemer Date: Thu, 18 Feb 2021 05:18:07 +0000 (-0800) Subject: [dev.typeparams] cmd/compile/internal/types: review of type.go X-Git-Tag: go1.17beta1~1473^2~12 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c2314babb8;p=gostls13.git [dev.typeparams] cmd/compile/internal/types: review of type.go The changes between (equivalent, and reviewed) go/types/type.go and type.go can be seen by comparing patchset 1 and 3. The actual change is just removing the "// UNREVIEWED" marker and some comment adjustments. Change-Id: Ied0e2f942bc96a9fcae0466761cfaa60a87668db Reviewed-on: https://go-review.googlesource.com/c/go/+/293471 Trust: Robert Griesemer Reviewed-by: Robert Findley --- diff --git a/src/cmd/compile/internal/types2/type.go b/src/cmd/compile/internal/types2/type.go index c1c3a4629e..a9ac90246d 100644 --- a/src/cmd/compile/internal/types2/type.go +++ b/src/cmd/compile/internal/types2/type.go @@ -1,4 +1,3 @@ -// UNREVIEWED // Copyright 2011 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. @@ -207,7 +206,7 @@ type Signature struct { // and store it in the Func Object) because when type-checking a function // literal we call the general type checker which returns a general Type. // We then unpack the *Signature and use the scope for the literal body. - rparams []*TypeName // reveiver type parameters from left to right; or nil + rparams []*TypeName // receiver type parameters from left to right; or nil tparams []*TypeName // type parameters from left to right; or nil scope *Scope // function scope, present for package-local signatures recv *Var // nil if not a method @@ -725,9 +724,8 @@ type TypeParam struct { bound Type // *Named or *Interface; underlying type is always *Interface } -func (t *TypeParam) Obj() *TypeName { - return t.obj -} +// Obj returns the type name for the type parameter t. +func (t *TypeParam) Obj() *TypeName { return t.obj } // NewTypeParam returns a new TypeParam. func (check *Checker) NewTypeParam(obj *TypeName, index int, bound Type) *TypeParam { @@ -747,6 +745,7 @@ func (t *TypeParam) Bound() *Interface { if n, _ := t.bound.(*Named); n != nil { pos = n.obj.pos } + // TODO(gri) switch this to an unexported method on Checker. t.check.completeInterface(pos, iface) return iface } @@ -762,7 +761,7 @@ func optype(typ Type) Type { if t := asTypeParam(typ); t != nil { // If the optype is typ, return the top type as we have // no information. It also prevents infinite recursion - // via the TypeParam converter methods. This can happen + // via the asTypeParam converter function. This can happen // for a type parameter list of the form: // (type T interface { type T }). // See also issue #39680.