aboutsummaryrefslogtreecommitdiff
path: root/src/text/template/parse
diff options
context:
space:
mode:
authorDaniel Martí <mvdan@mvdan.cc>2018-01-29 11:14:31 +0000
committerRuss Cox <rsc@golang.org>2018-02-06 04:43:35 +0000
commitf54f780d2f4ed47da4bed87c37f7219df1b9879b (patch)
treeb13df73bcd7b8d5a77b921a450878d65fb8e1278 /src/text/template/parse
parenta0222ec518a80909060151ccbc275e67f3f03b60 (diff)
downloadgo-f54f780d2f4ed47da4bed87c37f7219df1b9879b.tar.xz
cmd/vet: unexported interface{} fields on %s are ok
For example, the following program is valid: type T struct { f interface{} } func main() { fmt.Printf("%s", T{"foo"}) // prints {foo} } Since the field is of type interface{}, we might have any value in it. For example, if we had T{3}, fmt would complain. However, not knowing what the type under the interface is, we must be conservative. However, as shown in #17798, we should issue an error if the field's type is statically known to implement the error or fmt.Stringer interfaces. In those cases, the user likely wanted the %s format to call those methods. Keep the vet error in those cases. While at it, add more field type test cases, such as custom error types, and interfaces that extend the error interface. Fixes #23563. Change-Id: I063885955555917c59da000391b603f0d6dce432 Reviewed-on: https://go-review.googlesource.com/90516 Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/text/template/parse')
0 files changed, 0 insertions, 0 deletions