mirror of
https://github.com/golang/go.git
synced 2024-09-30 23:07:22 +00:00
text/template: fix nil error on redefinition
Fixes #2720. R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/5545072
This commit is contained in:
parent
f4ad8c1c5b
commit
4985ee3dcb
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user