From d2fd503f687ca686cb8fbee0b29e64ba529038fe Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 5 May 2021 21:13:24 -0400 Subject: text/template: fix type bug in eq {{eq .x 0}} where .x is a nil interface{} should be false, not a type error. Similarly, {{eq .x .x}} should succeed, not panic in reflect. Fixes #45982. Change-Id: I90aba82bb2f1a9e162bde1290c94f5028f56f412 Reviewed-on: https://go-review.googlesource.com/c/go/+/317470 Trust: Russ Cox Run-TryBot: Russ Cox TryBot-Result: Go Bot Reviewed-by: Rob Pike --- src/text/template/exec_test.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/text/template/exec_test.go') diff --git a/src/text/template/exec_test.go b/src/text/template/exec_test.go index e73fce4fa8..ef521645a7 100644 --- a/src/text/template/exec_test.go +++ b/src/text/template/exec_test.go @@ -1201,8 +1201,11 @@ var cmpTests = []cmpTest{ {"eq .Ptr .NilPtr", "false", true}, {"eq .NilPtr .NilPtr", "true", true}, {"eq .Iface1 .Iface1", "true", true}, - {"eq .Iface1 .Iface2", "false", true}, - {"eq .Iface2 .Iface2", "true", true}, + {"eq .Iface1 .NilIface", "false", true}, + {"eq .NilIface .NilIface", "true", true}, + {"eq .NilIface .Iface1", "false", true}, + {"eq .NilIface 0", "false", true}, + {"eq 0 .NilIface", "false", true}, // Errors {"eq `xy` 1", "", false}, // Different types. {"eq 2 2.0", "", false}, // Different types. @@ -1217,12 +1220,12 @@ var cmpTests = []cmpTest{ func TestComparison(t *testing.T) { b := new(bytes.Buffer) var cmpStruct = struct { - Uthree, Ufour uint - NegOne, Three int - Ptr, NilPtr *int - Map map[int]int - V1, V2 V - Iface1, Iface2 fmt.Stringer + Uthree, Ufour uint + NegOne, Three int + Ptr, NilPtr *int + Map map[int]int + V1, V2 V + Iface1, NilIface fmt.Stringer }{ Uthree: 3, Ufour: 4, -- cgit v1.3-5-g9baa