From a4b8241d97fb180e1b9cb41c4828345c931d1aaf Mon Sep 17 00:00:00 2001 From: Dan Scales Date: Fri, 2 Apr 2021 16:52:58 -0700 Subject: cmd/compile: get rid of Fields in types.Interface, use allMethods in types.Type instead Confusingly, the set of all methods of an interface is currently set in Fields field of types.Interface. This is true, even though there is already an allMethods field (and AllMethods method) of types.Type. Change so the set of all methods of an interface are stored in Type.allMethods, and Interface.Fields is removed. Update the comments for Methods and AllMethods. Change-Id: Ibc32bafae86831cba62606b079a855690612c759 Reviewed-on: https://go-review.googlesource.com/c/go/+/307209 Run-TryBot: Dan Scales TryBot-Result: Go Bot Trust: Dan Scales Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/types/size.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/cmd/compile/internal/types/size.go') diff --git a/src/cmd/compile/internal/types/size.go b/src/cmd/compile/internal/types/size.go index a75429f0ab..f0e695ab96 100644 --- a/src/cmd/compile/internal/types/size.go +++ b/src/cmd/compile/internal/types/size.go @@ -119,7 +119,7 @@ func expandiface(t *Type) { // Embedded interface: duplicate all methods // (including broken ones, if any) and add to t's // method set. - for _, t1 := range m.Type.Fields().Slice() { + for _, t1 := range m.Type.AllMethods().Slice() { // Use m.Pos rather than t1.Pos to preserve embedding position. f := NewField(m.Pos, t1.Sym, t1.Type) addMethod(f, false) @@ -135,9 +135,7 @@ func expandiface(t *Type) { m.Offset = int64(i) * int64(PtrSize) } - // Access fields directly to avoid recursively calling CalcSize - // within Type.Fields(). - t.Extra.(*Interface).Fields.Set(methods) + t.SetAllMethods(methods) } func calcStructOffset(errtype *Type, t *Type, o int64, flag int) int64 { -- cgit v1.2.3-54-g00ecf