From: Rob Findley Date: Tue, 22 Jun 2021 14:13:54 +0000 (-0400) Subject: [dev.typeparams] go/types: adjust logic for method expression arg naming X-Git-Tag: go1.18beta1~1818^2^2~300 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=62095c66e042024fc631a3e9514b637ae4b5ae10;p=gostls13.git [dev.typeparams] go/types: adjust logic for method expression arg naming CL 325369 improved this logic in types2. Port this improvement back to go/types. Change-Id: I5f859cbffd88bb3db09a81c2389269f7bd0869f9 Reviewed-on: https://go-review.googlesource.com/c/go/+/330069 Trust: Robert Findley Run-TryBot: Robert Findley TryBot-Result: Go Bot Reviewed-by: Robert Griesemer --- diff --git a/src/go/types/call.go b/src/go/types/call.go index 3a04121e98..039c7bbaf5 100644 --- a/src/go/types/call.go +++ b/src/go/types/call.go @@ -587,16 +587,15 @@ func (check *Checker) selector(x *operand, e *ast.SelectorExpr) { if sig.params != nil { params = sig.params.vars } - // Be consistent about named/unnamed parameters. - needName := true - for _, param := range params { - if param.Name() == "" { - needName = false - break - } - } + // Be consistent about named/unnamed parameters. This is not needed + // for type-checking, but the newly constructed signature may appear + // in an error message and then have mixed named/unnamed parameters. + // (An alternative would be to not print parameter names in errors, + // but it's useful to see them; this is cheap and method expressions + // are rare.) name := "" - if needName { + if len(params) > 0 && params[0].name != "" { + // name needed name = sig.recv.name if name == "" { name = "_"