diff options
| author | Rob Pike <r@golang.org> | 2012-01-17 13:24:59 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2012-01-17 13:24:59 -0800 |
| commit | 4985ee3dcb76bd0f9d8aba800e97ba29b535997f (patch) | |
| tree | c916b628427fb0910b6f46bff495c0815c0baac0 /src/pkg/text/template | |
| parent | f4ad8c1c5b8ec6c271a206a3ec74d57b03b7e0e6 (diff) | |
| download | go-4985ee3dcb76bd0f9d8aba800e97ba29b535997f.tar.xz | |
text/template: fix nil error on redefinition
Fixes #2720.
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5545072
Diffstat (limited to 'src/pkg/text/template')
| -rw-r--r-- | src/pkg/text/template/multi_test.go | 15 | ||||
| -rw-r--r-- | src/pkg/text/template/template.go | 2 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/pkg/text/template/multi_test.go b/src/pkg/text/template/multi_test.go index 3abb51f338..0f2b75d4c7 100644 --- a/src/pkg/text/template/multi_test.go +++ b/src/pkg/text/template/multi_test.go @@ -9,6 +9,7 @@ package template import ( "bytes" "fmt" + "strings" "testing" "text/template/parse" ) @@ -257,3 +258,17 @@ func TestAddParseTree(t *testing.T) { t.Errorf("expected %q got %q", "broot", b.String()) } } + +func TestRedefinition(t *testing.T) { + var tmpl *Template + var err error + if tmpl, err = New("tmpl1").Parse(`{{define "test"}}foo{{end}}`); err != nil { + t.Fatalf("parse 1: %v", err) + } + if _, err = tmpl.New("tmpl2").Parse(`{{define "test"}}bar{{end}}`); err == nil { + t.Fatal("expected error") + } + if !strings.Contains(err.Error(), "redefinition") { + t.Fatalf("expected redefinition error; got %v", err) + } +} diff --git a/src/pkg/text/template/template.go b/src/pkg/text/template/template.go index cbc6808174..87e39d3af7 100644 --- a/src/pkg/text/template/template.go +++ b/src/pkg/text/template/template.go @@ -198,7 +198,7 @@ func (t *Template) associate(new *Template) error { name := new.name if old := t.tmpl[name]; old != nil { oldIsEmpty := parse.IsEmptyTree(old.Root) - newIsEmpty := parse.IsEmptyTree(new.Root) + newIsEmpty := new.Tree != nil && parse.IsEmptyTree(new.Root) if !oldIsEmpty && !newIsEmpty { return fmt.Errorf("template: redefinition of template %q", name) } |
