aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/text/template/exec.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2013-03-06 12:34:19 -0800
committerRob Pike <r@golang.org>2013-03-06 12:34:19 -0800
commitc76379954f57399b2e84528ac369f5cb07698acf (patch)
tree0a0e225bdc3445ec50525e259ba862638d7fab42 /src/pkg/text/template/exec.go
parent4f43201e51f36e7db909ff3c3a86104dada5161b (diff)
downloadgo-c76379954f57399b2e84528ac369f5cb07698acf.tar.xz
text/template: improve error reporting for executing an empty template
Fixes #4522. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/7502044
Diffstat (limited to 'src/pkg/text/template/exec.go')
-rw-r--r--src/pkg/text/template/exec.go18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/pkg/text/template/exec.go b/src/pkg/text/template/exec.go
index b9c03d8f0b..12c40b70f1 100644
--- a/src/pkg/text/template/exec.go
+++ b/src/pkg/text/template/exec.go
@@ -5,6 +5,7 @@
package template
import (
+ "bytes"
"fmt"
"io"
"reflect"
@@ -125,8 +126,23 @@ func (t *Template) Execute(wr io.Writer, data interface{}) (err error) {
wr: wr,
vars: []variable{{"$", value}},
}
+ t.init()
if t.Tree == nil || t.Root == nil {
- state.errorf("%q is an incomplete or empty template", t.name)
+ var b bytes.Buffer
+ for name, tmpl := range t.tmpl {
+ if tmpl.Tree == nil || tmpl.Root == nil {
+ continue
+ }
+ if b.Len() > 0 {
+ b.WriteString(", ")
+ }
+ fmt.Fprintf(&b, "%q", name)
+ }
+ var s string
+ if b.Len() > 0 {
+ s = "; defined templates are: " + b.String()
+ }
+ state.errorf("%q is an incomplete or empty template%s", t.Name(), s)
}
state.walk(value, t.Root)
return