aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-08-24 13:52:07 -0700
committerRobert Griesemer <gri@golang.org>2021-08-25 23:43:42 +0000
commitbf0bc4122fd4b3a75c2f9c107895cd5e2f89b90e (patch)
tree23cd38474a436924b4eb82f379e847b31d6fad61 /src
parent4158e88f64f34d1d0bab1d54be6be72a598ca41f (diff)
downloadgo-bf0bc4122fd4b3a75c2f9c107895cd5e2f89b90e.tar.gz
go-bf0bc4122fd4b3a75c2f9c107895cd5e2f89b90e.zip
go/types, types2: don't re-evaluate context string for each function argument (optimization)
Change-Id: Ie1b4d5b64350ea42484adea14df84cacd1d2653b Reviewed-on: https://go-review.googlesource.com/c/go/+/344576 Trust: Robert Griesemer <gri@golang.org> Trust: Dan Scales <danscales@google.com> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/types2/call.go7
-rw-r--r--src/go/types/call.go7
2 files changed, 10 insertions, 4 deletions
diff --git a/src/cmd/compile/internal/types2/call.go b/src/cmd/compile/internal/types2/call.go
index 538fdc0fb7..4bbc524856 100644
--- a/src/cmd/compile/internal/types2/call.go
+++ b/src/cmd/compile/internal/types2/call.go
@@ -341,8 +341,11 @@ func (check *Checker) arguments(call *syntax.CallExpr, sig *Signature, targs []T
}
// check arguments
- for i, a := range args {
- check.assignment(a, sigParams.vars[i].typ, check.sprintf("argument to %s", call.Fun))
+ if len(args) > 0 {
+ context := check.sprintf("argument to %s", call.Fun)
+ for i, a := range args {
+ check.assignment(a, sigParams.vars[i].typ, context)
+ }
}
return
diff --git a/src/go/types/call.go b/src/go/types/call.go
index 87eeef444b..fdecafb781 100644
--- a/src/go/types/call.go
+++ b/src/go/types/call.go
@@ -347,8 +347,11 @@ func (check *Checker) arguments(call *ast.CallExpr, sig *Signature, targs []Type
}
// check arguments
- for i, a := range args {
- check.assignment(a, sigParams.vars[i].typ, check.sprintf("argument to %s", call.Fun))
+ if len(args) > 0 {
+ context := check.sprintf("argument to %s", call.Fun)
+ for i, a := range args {
+ check.assignment(a, sigParams.vars[i].typ, context)
+ }
}
return