shithub: hugo

Download patch

ref: be15927819fab6a78d9faea904ee8037ce577984
parent: be049ff96ad5c5af1192316b43a2e9577ef0b065
author: bep <[email protected]>
date: Fri May 1 13:00:22 EDT 2015

tpl: check that types in args match the target func's type

Fixes #1095

--- a/tpl/template_funcs.go
+++ b/tpl/template_funcs.go
@@ -672,6 +672,12 @@
 		return reflect.ValueOf(nil), errors.New("Too many arguments")
 	}
 
+	for i := 0; i < num; i++ {
+		if xt, targ := n[i].Type(), fn.Type().In(i); !xt.AssignableTo(targ) {
+			return reflect.ValueOf(nil), errors.New("called apply using " + xt.String() + " as type " + targ.String())
+		}
+	}
+
 	res := fn.Call(n)
 
 	if len(res) == 1 || res[1].IsNil() {
--- a/tpl/template_test.go
+++ b/tpl/template_test.go
@@ -23,7 +23,10 @@
 		{"{{ slicestr \"000000\" 10}}", 2},
 		// Issue #1091
 		{"{{apply .C \"first\" 0 0 0}}", 2},
-		{"{{seq 3e80}}", 2}} {
+		{"{{seq 3e80}}", 2},
+		// Issue #1095
+		{"{{apply .C \"urlize\" " +
+			"\".\"}}", 2}} {
 		templ := New()
 
 		d := &Data{