From 80bbad015d2f3f9407873c1657839a8a61d5f433 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Tue, 10 Apr 2018 15:13:49 -0700 Subject: [PATCH] cmd/compile: omit unnecessary interface method expression wrappers We'll always generate method expression wrappers for declared interface types in their own package, so no need to generate them in downstream packages. Noticed by gri@ while looking into #21282. Change-Id: I4fb7051b4e15297933da05fdd2b111d6b8f4178e Reviewed-on: https://go-review.googlesource.com/106175 Run-TryBot: Matthew Dempsky Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/subr.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go index 49c1b485c9..f46279cf6e 100644 --- a/src/cmd/compile/internal/gc/subr.go +++ b/src/cmd/compile/internal/gc/subr.go @@ -1633,6 +1633,11 @@ func genwrapper(rcvr *types.Type, method *types.Field, newnam *types.Sym) { return } + // Only generate I.M wrappers for I in I's own package. + if rcvr.IsInterface() && rcvr.Sym != nil && rcvr.Sym.Pkg != localpkg { + return + } + lineno = autogeneratedPos dclcontext = PEXTERN