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

griesemer opened this issue Oct 25, 2018 · 3 comments

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

griesemer opened this issue Oct 25, 2018 · 3 comments


Copy link

@griesemer griesemer commented Oct 25, 2018

See #28357 for details.

Copy link

@mdempsky mdempsky 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>
Copy link

@gopherbot gopherbot commented Dec 4, 2018

Change mentions this issue: cmd/compile: unify duplicate const detection logic

Copy link

@mdempsky mdempsky 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
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

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
Run-TryBot: Matthew Dempsky <>
TryBot-Result: Gobot Gobot <>
Reviewed-by: Robert Griesemer <>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants