From: Matthew Dempsky Date: Tue, 28 Jun 2022 23:30:29 +0000 (-0700) Subject: [dev.unified] test: add regress test for generic select statements X-Git-Tag: go1.20rc1~1807^2~37 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2280d897d6;p=gostls13.git [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 Run-TryBot: Matthew Dempsky Reviewed-by: Cuong Manh Le Reviewed-by: David Chase --- diff --git a/test/run.go b/test/run.go index c99f104cf6..2a365da21c 100644 --- a/test/run.go +++ b/test/run.go @@ -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 diff --git a/test/typeparam/mdempsky/18.go b/test/typeparam/mdempsky/18.go new file mode 100644 index 0000000000..f4a4ec73c5 --- /dev/null +++ b/test/typeparam/mdempsky/18.go @@ -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) +} diff --git a/test/typeparam/mdempsky/18.out b/test/typeparam/mdempsky/18.out new file mode 100644 index 0000000000..19f1c39a22 --- /dev/null +++ b/test/typeparam/mdempsky/18.out @@ -0,0 +1 @@ +int bool