From: Cuong Manh Le Date: Fri, 25 Jun 2021 07:01:54 +0000 (+0700) Subject: [dev.typeparams] cmd/compile: clarify comment about checking reflect.Method in usemethod X-Git-Tag: go1.18beta1~1818^2^2~268 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d417b8cf87;p=gostls13.git [dev.typeparams] cmd/compile: clarify comment about checking reflect.Method in usemethod Followup discussion in CL 330670. Change-Id: Icec2d5d5715666a6967e18ac9ab3d802b47569da Reviewed-on: https://go-review.googlesource.com/c/go/+/330830 Trust: Cuong Manh Le Run-TryBot: Cuong Manh Le TryBot-Result: Go Bot Reviewed-by: Matthew Dempsky --- diff --git a/src/cmd/compile/internal/walk/expr.go b/src/cmd/compile/internal/walk/expr.go index d8bded8075..6928f2ac70 100644 --- a/src/cmd/compile/internal/walk/expr.go +++ b/src/cmd/compile/internal/walk/expr.go @@ -958,9 +958,8 @@ func usemethod(n *ir.CallExpr) { return } - // Note: Don't rely on Field.Type.String() since its formatting depends on multiple factors - // (including global variables such as numImports - was issue #19028). - // Also need to check for reflect package itself (see Issue #38515). + // Check that first result type is "reflect.Method". Note that we have to check sym name and sym package + // separately, as we can't check for exact string "reflect.Method" reliably (e.g., see #19028 and #38515). if s := t.Results().Field(0).Type.Sym(); s != nil && s.Name == "Method" && types.IsReflectPkg(s.Pkg) { ir.CurFunc.SetReflectMethod(true) // The LSym is initialized at this point. We need to set the attribute on the LSym.