From 02d56a1584f968b86b669b3b943dc2ffad30e087 Mon Sep 17 00:00:00 2001 From: Robert Findley Date: Mon, 27 Sep 2021 19:49:38 -0400 Subject: [PATCH] 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 --- src/go/types/interface.go | 6 ++++++ 1 file changed, 6 insertions(+) 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 -- 2.48.1