mirror of
https://github.com/golang/go
synced 2024-11-25 16:37:57 -07:00
5f50b1e3bf
CL 418101 changes Unified IR writer to force mixed tag/case to have common type, emitting the implicit conversion if any of the case values are not assignable to the tag value's type. However, the Go spec definition of equality is non-transitive for channels stored in interfaces, causing incorrect behavior with channel values comparison. To fix it, don't emit the implicit conversions if tag type is channel. Fixes #67190 Change-Id: I9a29d9ce3c7978f0689e9502ba6f15660c763d16 Reviewed-on: https://go-review.googlesource.com/c/go/+/594575 Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com> Reviewed-by: Keith Randall <khr@google.com> Reviewed-by: Keith Randall <khr@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Than McIntosh <thanm@google.com>
25 lines
391 B
Go
25 lines
391 B
Go
// run
|
|
|
|
// Copyright 2024 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
func main() {
|
|
ch1 := make(chan struct{})
|
|
var ch2 <-chan struct{} = ch1
|
|
|
|
switch ch1 {
|
|
case ch2:
|
|
default:
|
|
panic("bad narrow case")
|
|
}
|
|
|
|
switch ch2 {
|
|
case ch1:
|
|
default:
|
|
panic("bad narrow switch")
|
|
}
|
|
}
|