diff options
| author | Andrew Gerrand <adg@golang.org> | 2016-04-08 15:39:32 +1000 |
|---|---|---|
| committer | Andrew Gerrand <adg@golang.org> | 2016-04-10 23:29:29 +0000 |
| commit | 0fd270ab7abec08c050f29a3bbeb83d7740d0a47 (patch) | |
| tree | 8d2ea49e642531c814249dd6ad1f3d077f58fc5e /src/text/template/exec_test.go | |
| parent | 0004f34cefcdaad13a5131e3494fb2ff04877cd2 (diff) | |
| download | go-0fd270ab7abec08c050f29a3bbeb83d7740d0a47.tar.xz | |
text/template: emit field error over nil pointer error where appropriate
When evaluating "{{.MissingField}}" on a nil *T, Exec returns
"can't evaluate field MissingField in type *T" instead of
"nil pointer evaluating *T.MissingField".
Fixes golang/go#15125
Change-Id: I6e73f61b8a72c694179c1f8cdc808766c90b6f57
Reviewed-on: https://go-review.googlesource.com/21705
Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/text/template/exec_test.go')
| -rw-r--r-- | src/text/template/exec_test.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/text/template/exec_test.go b/src/text/template/exec_test.go index e507e917fe..bc2aa683ec 100644 --- a/src/text/template/exec_test.go +++ b/src/text/template/exec_test.go @@ -1280,3 +1280,20 @@ func TestBlock(t *testing.T) { t.Errorf("got %q, want %q", got, want2) } } + +// Check that calling an invalid field on nil pointer prints +// a field error instead of a distracting nil pointer error. +// https://golang.org/issue/15125 +func TestMissingFieldOnNil(t *testing.T) { + tmpl := Must(New("tmpl").Parse("{{.MissingField}}")) + var d *T + err := tmpl.Execute(ioutil.Discard, d) + got := "<nil>" + if err != nil { + got = err.Error() + } + want := "can't evaluate field MissingField in type *template.T" + if !strings.HasSuffix(got, want) { + t.Errorf("got error %q, want %q", got, want) + } +} |
