]> Cypherpunks repositories - gostls13.git/commit
go/types: instantiate methods when instantiating Named types
authorRobert Findley <rfindley@google.com>
Fri, 10 Sep 2021 20:28:01 +0000 (16:28 -0400)
committerRobert Findley <rfindley@google.com>
Wed, 15 Sep 2021 00:03:57 +0000 (00:03 +0000)
commita0f3129466744d22746b93e65ff3714f1507b6a3
tree6a7527c413a5d6fa3dd339c28b4785d9292a560c
parentbf26e43d0f9a6c9d43c206877917e66f0fc24a19
go/types: instantiate methods when instantiating Named types

In the API proposal we decided that instantiation must also instantiate
methods. This CL does that, and eliminates the special handling for lazy
instantiation in lookupMethod.

It is possible that we expand an instance before all method signatures
have been type-checked, so for simplicity we introduce a new flag on
Func, 'isIncompleteMethod', which controls whether we must fully
substitute methods before using them. We could avoid this flag by using
some convention for the structure of an incomplete method (such as the
receiver has no position), but in practice using a flag was cleaner and
didn't increase the size of the Func struct.

Updates #47916

Change-Id: I352baa6664cd07f61b06924744382897805f9d29
Reviewed-on: https://go-review.googlesource.com/c/go/+/349412
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/types/call.go
src/go/types/decl.go
src/go/types/infer.go
src/go/types/instantiate_test.go
src/go/types/lookup.go
src/go/types/named.go
src/go/types/object.go
src/go/types/sizeof_test.go
src/go/types/subst.go