From: Robert Findley Date: Mon, 27 Sep 2021 23:49:38 +0000 (-0400) Subject: go/types: add the Interface.IsMethodSet method X-Git-Tag: go1.18beta1~1153 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=02d56a1584f968b86b669b3b943dc2ffad30e087;p=gostls13.git go/types: add the Interface.IsMethodSet method As pointed out in #47916, the IsConstraint method becomes ambiguously named if ever we allow interfaces with structural restrictions outside of constraint position. Add instead an IsMethodSet method, which has the opposite sense and avoids this ambiguity. In a subsequent CL the IsConstraint method will be removed, once x/tools has been updated to use the IsMethodSet API. Updates #47916 Change-Id: I82ad16b111464b0cd2f354b8ecdd4b3f14796cd9 Reviewed-on: https://go-review.googlesource.com/c/go/+/352616 Trust: Robert Findley Run-TryBot: Robert Findley TryBot-Result: Go Bot Reviewed-by: Robert Griesemer --- diff --git a/src/go/types/interface.go b/src/go/types/interface.go index c67aca7a20..ccea1f6dcc 100644 --- a/src/go/types/interface.go +++ b/src/go/types/interface.go @@ -104,7 +104,13 @@ func (t *Interface) Empty() bool { return t.typeSet().IsAll() } // IsComparable reports whether each type in interface t's type set is comparable. func (t *Interface) IsComparable() bool { return t.typeSet().IsComparable() } +// IsMethodSet reports whether the interface t is fully described by its method +// set. +func (t *Interface) IsMethodSet() bool { return !t.typeSet().IsConstraint() } + // IsConstraint reports whether interface t is not just a method set. +// +// TODO(rfindley): remove this method. func (t *Interface) IsConstraint() bool { return t.typeSet().IsConstraint() } // Complete computes the interface's type set. It must be called by users of