mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile/internal/noder: suppress unionType consistency check
In the types1 universe, we only need to represent value types. For interfaces, this means we only need to worry about pure interfaces. A pure interface can embed a union type, but the overall union must be equivalent to "any". In go.dev/cl/458619, we changed the types1 reader to return "any", but to incorporate a consistency check to make sure this is valid. Unfortunately, a pure interface can actually still reference impure interfaces, and in general this is hard to check precisely without reimplementing a lot of types2 data structures and logic into types1. We haven't had any other reports of this check failing since 1.20, so it seems simplest to just suppress for now. Fixes #60117. Change-Id: I5053faafe2d1068c6d438b2193347546bf5330cd Reviewed-on: https://go-review.googlesource.com/c/go/+/495455 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Auto-Submit: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Keith Randall <khr@google.com>
This commit is contained in:
parent
298ff30958
commit
7240d7e9e4
2 changed files with 21 additions and 12 deletions
|
|
@ -7,11 +7,15 @@
|
|||
package p
|
||||
|
||||
type Any any
|
||||
type IntOrBool interface{ int | bool }
|
||||
|
||||
type I interface{ Any | int }
|
||||
type I interface{ Any | IntOrBool }
|
||||
|
||||
var (
|
||||
X I = 42
|
||||
Y I = "xxx"
|
||||
Z I = true
|
||||
)
|
||||
|
||||
type A interface{ *B | int }
|
||||
type B interface{ A | any }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue