aboutsummaryrefslogtreecommitdiff
path: root/src/text/template/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/text/template/exec.go')
-rw-r--r--src/text/template/exec.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/text/template/exec.go b/src/text/template/exec.go
index b4e6cc8282..8e9edcfbe9 100644
--- a/src/text/template/exec.go
+++ b/src/text/template/exec.go
@@ -581,7 +581,15 @@ func (s *state) evalCall(dot, fun reflect.Value, node parse.Node, name string, a
if final.IsValid() {
t := typ.In(typ.NumIn() - 1)
if typ.IsVariadic() {
- t = t.Elem()
+ if numIn-1 < numFixed {
+ // The added final argument corresponds to a fixed parameter of the function.
+ // Validate against the type of the actual parameter.
+ t = typ.In(numIn - 1)
+ } else {
+ // The added final argument corresponds to the variadic part.
+ // Validate against the type of the elements of the variadic slice.
+ t = t.Elem()
+ }
}
argv[i] = s.validateType(final, t)
}