Initial commit: Go 1.23 release state
This commit is contained in:
54
test/typeparam/issue48424.go
Normal file
54
test/typeparam/issue48424.go
Normal file
@@ -0,0 +1,54 @@
|
||||
// run
|
||||
|
||||
// Copyright 2021 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.
|
||||
|
||||
// Smoke test for constraint literals with elided interface
|
||||
// per issue #48424.
|
||||
|
||||
package main
|
||||
|
||||
func identity[T int](x T) T {
|
||||
return x
|
||||
}
|
||||
|
||||
func min[T int | string](x, y T) T {
|
||||
if x < y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func max[T ~int | ~float64](x, y T) T {
|
||||
if x > y {
|
||||
return x
|
||||
}
|
||||
return y
|
||||
}
|
||||
|
||||
func main() {
|
||||
if identity(1) != 1 {
|
||||
panic("identity(1) failed")
|
||||
}
|
||||
|
||||
if min(2, 3) != 2 {
|
||||
panic("min(2, 3) failed")
|
||||
}
|
||||
|
||||
if min("foo", "bar") != "bar" {
|
||||
panic(`min("foo", "bar") failed`)
|
||||
}
|
||||
|
||||
if max(2, 3) != 3 {
|
||||
panic("max(2, 3) failed")
|
||||
}
|
||||
}
|
||||
|
||||
// Some random type parameter lists with elided interfaces.
|
||||
|
||||
type (
|
||||
_[T struct{}] struct{}
|
||||
_[M map[K]V, K comparable, V any] struct{}
|
||||
_[_ interface{} | int] struct{}
|
||||
)
|
||||
Reference in New Issue
Block a user