]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: move NewTypeParam off of Checker
authorRobert Findley <rfindley@google.com>
Fri, 3 Sep 2021 15:22:18 +0000 (11:22 -0400)
committerRobert Findley <rfindley@google.com>
Wed, 8 Sep 2021 16:32:00 +0000 (16:32 +0000)
This aligns with the API proposal.

Change-Id: I9967a317196392ffa5ddbe5391d7aba5f6e7bad2
Reviewed-on: https://go-review.googlesource.com/c/go/+/347561
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>
src/go/internal/gcimporter/iimport.go
src/go/types/builtins.go
src/go/types/decl.go
src/go/types/typeparam.go

index 3571941d04f8d68d80528ca832d194ec37e86bbc..96c2bb3f2c815866706a81c387fc68739da9791d 100644 (file)
@@ -355,7 +355,7 @@ func (r *importReader) obj(name string) {
                }
                name0, sub := parseSubscript(name)
                tn := types.NewTypeName(pos, r.currPkg, name0, nil)
-               t := (*types.Checker)(nil).NewTypeParam(tn, nil)
+               t := types.NewTypeParam(tn, nil)
                if sub == 0 {
                        errorf("missing subscript")
                }
index ecf7b89275a9103b3d4e3ff9a54ec36a8b0c1758..d805e46666dab798dd732192a281c789b749a343 100644 (file)
@@ -830,7 +830,7 @@ func (check *Checker) applyTypeFunc(f func(Type) Type, x Type) Type {
                // type param is placed in the current package so export/import
                // works as expected.
                tpar := NewTypeName(token.NoPos, check.pkg, "<type parameter>", nil)
-               ptyp := check.NewTypeParam(tpar, NewInterfaceType(nil, []Type{NewUnion(terms)})) // assigns type to tpar as a side-effect
+               ptyp := check.newTypeParam(tpar, NewInterfaceType(nil, []Type{NewUnion(terms)})) // assigns type to tpar as a side-effect
                ptyp.index = tp.index
 
                return ptyp
index 80f8f2f429e3d7220ce069910dc4e4e5b8114bce..b48081f0b1d77a1c795655c3d6b3c936c93545ca 100644 (file)
@@ -677,7 +677,7 @@ func (check *Checker) collectTypeParams(list *ast.FieldList) *TParamList {
 func (check *Checker) declareTypeParams(tparams []*TypeParam, names []*ast.Ident) []*TypeParam {
        for _, name := range names {
                tname := NewTypeName(name.Pos(), check.pkg, name.Name, nil)
-               tpar := check.NewTypeParam(tname, &emptyInterface)       // assigns type to tpar as a side-effect
+               tpar := check.newTypeParam(tname, &emptyInterface)       // assigns type to tpar as a side-effect
                check.declare(check.scope, name, tname, check.scope.pos) // TODO(gri) check scope position
                tparams = append(tparams, tpar)
        }
index b6952489ca94e14ba3f03dccf25f2811bb4bb679..29d44f4cb2f7866b10941c757ab60f262c9189d9 100644 (file)
@@ -32,15 +32,19 @@ type TypeParam struct {
 // or Signature type by calling SetTParams. Setting a type parameter on more
 // than one type will result in a panic.
 //
-// The bound argument can be nil, and set later via SetBound.
-func (check *Checker) NewTypeParam(obj *TypeName, bound Type) *TypeParam {
+// The bound argument can be nil, and set later via SetConstraint.
+func NewTypeParam(obj *TypeName, constraint Type) *TypeParam {
+       return (*Checker)(nil).newTypeParam(obj, constraint)
+}
+
+func (check *Checker) newTypeParam(obj *TypeName, constraint Type) *TypeParam {
        // Always increment lastID, even if it is not used.
        id := nextID()
        if check != nil {
                check.nextID++
                id = check.nextID
        }
-       typ := &TypeParam{check: check, id: id, obj: obj, index: -1, bound: bound}
+       typ := &TypeParam{check: check, id: id, obj: obj, index: -1, bound: constraint}
        if obj.typ == nil {
                obj.typ = typ
        }