mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
go/types: no need to validate substituted instances
This is a straightforward port of CL 342150 to go/types. Change-Id: I7363e4642ade7ab30ca822a2be71f4d2804cc4a9 Reviewed-on: https://go-review.googlesource.com/c/go/+/342669 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>
This commit is contained in:
parent
e49775e057
commit
30a423eb39
1 changed files with 8 additions and 3 deletions
|
@ -228,10 +228,15 @@ func (subst *subster) typ(typ Type) Type {
|
|||
return named
|
||||
}
|
||||
|
||||
// create a new named type and populate typMap to avoid endless recursion
|
||||
// Create a new named type and populate typMap to avoid endless recursion.
|
||||
// The position used here is irrelevant because validation only occurs on t
|
||||
// (we don't call validType on named), but we use subst.pos to help with
|
||||
// debugging.
|
||||
tname := NewTypeName(subst.pos, t.obj.pkg, t.obj.name, nil)
|
||||
t.load()
|
||||
named := subst.check.newNamed(tname, t.orig, t.underlying, t.TParams(), t.methods) // method signatures are updated lazily
|
||||
// It's ok to provide a nil *Checker because the newly created type
|
||||
// doesn't need to be (lazily) expanded; it's expanded below.
|
||||
named := (*Checker)(nil).newNamed(tname, t.orig, nil, t.tparams, t.methods) // t is loaded, so tparams and methods are available
|
||||
named.targs = newTArgs
|
||||
subst.typMap[h] = named
|
||||
t.expand(subst.typMap) // must happen after typMap update to avoid infinite recursion
|
||||
|
@ -241,7 +246,7 @@ func (subst *subster) typ(typ Type) Type {
|
|||
named.underlying = subst.typOrNil(t.underlying)
|
||||
dump(">>> underlying: %v", named.underlying)
|
||||
assert(named.underlying != nil)
|
||||
named.fromRHS = named.underlying // for cycle detection (Checker.validType)
|
||||
named.fromRHS = named.underlying // for consistency, though no cycle detection is necessary
|
||||
|
||||
return named
|
||||
|
||||
|
|
Loading…
Reference in a new issue