]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile: clarify comment about checking reflect.Method in usemethod
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Fri, 25 Jun 2021 07:01:54 +0000 (14:01 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Sat, 26 Jun 2021 08:22:31 +0000 (08:22 +0000)
Followup discussion in CL 330670.

Change-Id: Icec2d5d5715666a6967e18ac9ab3d802b47569da
Reviewed-on: https://go-review.googlesource.com/c/go/+/330830
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/walk/expr.go

index d8bded807584e7b21a9d94a840dff2bf783be5a4..6928f2ac70625cbda9f193e03d2ad4a6eacd435b 100644 (file)
@@ -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.