]> Cypherpunks.ru repositories - gostls13.git/commit
[dev.unified] test: tweak nilcheck test
authorMatthew Dempsky <mdempsky@google.com>
Wed, 29 Jun 2022 23:48:06 +0000 (16:48 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 30 Jun 2022 18:41:59 +0000 (18:41 +0000)
commit2f3ef73e18ba9e2433248ca2f5d9c2fb3647a07d
tree836bd3f50c5211497f6c3c8f00a893f3e533d1bc
parent95d7ce9ab1dea5dface92736305470965a41f61e
[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 <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
test/nilcheck.go