This is a port of CL 332089 to go/types.
Change-Id: I39321eaee184c8204bd255b7770a0770ecb25fda
Reviewed-on: https://go-review.googlesource.com/c/go/+/335036
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>
// Compute type set with a non-nil *Checker as soon as possible
// to report any errors. Subsequent uses of type sets should be
// using this computed type set and won't need to pass in a *Checker.
- check.later(func() { newTypeSet(check, iface.Pos(), ityp) })
+ check.later(func() { computeTypeSet(check, iface.Pos(), ityp) })
}
func flattenUnion(list []ast.Expr, x ast.Expr) []ast.Expr {
}
// typeSet returns the type set for interface t.
-func (t *Interface) typeSet() *TypeSet { return newTypeSet(nil, token.NoPos, t) }
+func (t *Interface) typeSet() *TypeSet { return computeTypeSet(nil, token.NoPos, t) }
// is reports whether interface t represents types that all satisfy f.
func (t *Interface) is(f func(Type, bool) bool) bool {
pos = n.obj.pos
}
// TODO(rFindley) switch this to an unexported method on Checker.
- newTypeSet(t.check, pos, iface)
+ computeTypeSet(t.check, pos, iface)
return iface
}
// topTypeSet may be used as type set for the empty interface.
var topTypeSet TypeSet
-// newTypeSet may be called with check == nil.
-func newTypeSet(check *Checker, pos token.Pos, ityp *Interface) *TypeSet {
+// computeTypeSet may be called with check == nil.
+func computeTypeSet(check *Checker, pos token.Pos, ityp *Interface) *TypeSet {
if ityp.tset != nil {
return ityp.tset
}
var types Type
switch t := under(typ).(type) {
case *Interface:
- tset := newTypeSet(check, pos, t)
+ tset := computeTypeSet(check, pos, t)
for _, m := range tset.methods {
addMethod(pos, m, false) // use embedding position pos rather than m.pos
// type-checking.
check.later(func() {
if t := asInterface(typ); t != nil {
- tset := newTypeSet(check, pos.Pos(), t) // TODO(gri) is this the correct position?
+ tset := computeTypeSet(check, pos.Pos(), t) // TODO(gri) is this the correct position?
if tset.types != nil {
check.softErrorf(pos, _Todo, "interface contains type constraints (%s)", tset.types)
return