Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spec: add duplicate nil to the implementation restriction for switches #28378

Open
griesemer opened this issue Oct 25, 2018 · 3 comments

Comments

@griesemer
Copy link
Contributor

commented Oct 25, 2018

See #28357 for details.

@mdempsky

This comment has been minimized.

Copy link
Member

commented Dec 4, 2018

For what it's worth, cmd/compile only warns about duplicate nils for switches on non-interface expressions. That is, it doesn't warn about duplicate nil for switches on interface expressions or at all in map literals.

I'm working on a CL to unify this code. My inclination is to just stop warning about duplicate nils, rather than relax the spec to allow this. We don't even report them correctly, so I doubt anyone's triggering this in practice:

/tmp/r.go:16:2: duplicate case nil (value 0) in switch
	previous case at <unknown line number>
@gopherbot

This comment has been minimized.

Copy link

commented Dec 4, 2018

Change https://golang.org/cl/152544 mentions this issue: cmd/compile: unify duplicate const detection logic

@mdempsky

This comment has been minimized.

Copy link
Member

commented Dec 5, 2018

Oh, actually the warnings about duplicate nil in interface switch expressions was removed just recently in eb6c433 as part of fixing #28078. And that warning did give a correct previous line number.

gopherbot pushed a commit that referenced this issue Feb 27, 2019
cmd/compile: unify duplicate const detection logic
Consistent logic for handling both duplicate map keys and case values,
and eliminates ad hoc value hashing code.

Also makes cmd/compile consistent with go/types's handling of
duplicate constants (see #28085), which is at least an improvement
over the status quo even if we settle on something different for the
spec.

As a side effect, this also suppresses cmd/compile's warnings about
duplicate nils in (non-interface expression) switch statements, which
was technically never allowed by the spec anyway.

Updates #28085.
Updates #28378.

Change-Id: I176a251e770c3c5bc11c2bf8d1d862db8f252a17
Reviewed-on: https://go-review.googlesource.com/c/152544
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.