From 2f3ef73e18ba9e2433248ca2f5d9c2fb3647a07d Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 29 Jun 2022 16:48:06 -0700 Subject: [PATCH] [dev.unified] test: tweak nilcheck test A subsequent CL will change Unified IR to emit extra temporary variables for multi-value expressions, because they're sometimes necessary for handling implicit conversions. A consequence of this is that: _, ok := m[""] will be rewritten into: autotmp_1, autotmp_2 := m[""] _, ok := autotmp_1, autotmp_2 As the comment in nilcheck.go says, we don't want this code sequence to emit any nil checks, and it doesn't either way. But only the second form results in the compiler reporting "removed nil check", and I can't make sense of why. Rather than splitting this test case into separate unified and nounified variants, it seems easier to just tweak the test case to the more complex form and verify that we correctly remove the nil check still. Change-Id: I6a9266db933b201352d52da4d403a330fdeac48b Reviewed-on: https://go-review.googlesource.com/c/go/+/415242 Run-TryBot: Matthew Dempsky Reviewed-by: Cuong Manh Le TryBot-Result: Gopher Robot Reviewed-by: David Chase --- test/nilcheck.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/nilcheck.go b/test/nilcheck.go index 6879438e9c..e81db6dcb0 100644 --- a/test/nilcheck.go +++ b/test/nilcheck.go @@ -184,6 +184,7 @@ func f4(x *[10]int) { func f5(m map[string]struct{}) bool { // Existence-only map lookups should not generate a nil check - _, ok := m[""] + tmp1, tmp2 := m[""] // ERROR "removed nil check" + _, ok := tmp1, tmp2 return ok }