-
Notifications
You must be signed in to change notification settings - Fork 18k
spec: add duplicate nil to the implementation restriction for switches #28378
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
Comments
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:
|
Change https://golang.org/cl/152544 mentions this issue: |
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 <[email protected]> TryBot-Result: Gobot Gobot <[email protected]> Reviewed-by: Robert Griesemer <[email protected]>
The implementation now follows exactly the spec: only duplicate integer, floating-point, and string constants are disallowed. |
Note that the implementation also rejects duplicate boolean constants. |
@ianlancetaylor That is not the case, neither with 1.17, nor 1.18. |
When I run https://go.dev/play/p/BHQnDSDJK_T I see "./prog.go:6:37: duplicate key false in map literal". |
Ah, sorry, you are talking about switches and I am talking about composite literals. |
See #28357 for details.
The text was updated successfully, but these errors were encountered: