diff options
| author | Rob Pike <r@golang.org> | 2013-03-06 12:34:19 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2013-03-06 12:34:19 -0800 |
| commit | c76379954f57399b2e84528ac369f5cb07698acf (patch) | |
| tree | 0a0e225bdc3445ec50525e259ba862638d7fab42 /src/pkg/text/template/exec.go | |
| parent | 4f43201e51f36e7db909ff3c3a86104dada5161b (diff) | |
| download | go-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.go | 18 |
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 |
