[dev.unified] test: add regress test for generic select statements

The Go 1.18 frontend ICEs on select case clauses that involve an
implicit conversion.

Change-Id: I1c0865bf97d8b0a8fbddb0da43333e909df0d38a
Reviewed-on: https://go-review.googlesource.com/c/go/+/414878
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
Matthew Dempsky 2022-06-28 16:30:29 -07:00
parent 4b78ece3d7
commit 2280d897d6
3 changed files with 28 additions and 0 deletions

View file

@ -1970,6 +1970,7 @@ var go118Failures = setOf(
"typeparam/issue53477.go", // 1.18 compiler mishandles generic interface-interface comparisons from value switch statements
"typeparam/mdempsky/16.go", // 1.18 compiler uses interface shape type in failed type assertions
"typeparam/mdempsky/17.go", // 1.18 compiler mishandles implicit conversions from range loops
"typeparam/mdempsky/18.go", // 1.18 compiler mishandles implicit conversions in select statements
)
// In all of these cases, the 1.17 compiler reports reasonable errors, but either the

View file

@ -0,0 +1,26 @@
// run
// Copyright 2022 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.
// Test that implicit conversions to interface type in a select/case
// clause are compiled correctly.
package main
import "fmt"
func main() { f[int]() }
func f[T any]() {
ch := make(chan T)
close(ch)
var i, ok any
select {
case i, ok = <-ch:
}
fmt.Printf("%T %T\n", i, ok)
}

View file

@ -0,0 +1 @@
int bool