mirror of
https://github.com/golang/go
synced 2024-11-17 11:34:48 -07:00
[dev.typeparams] cmd/compile/internal/types2: convert testdata/fixedbugs tests to type set sytax
Change-Id: I2ad94c71bebb93e0e3f4eba9d5199a3b3e9fa63d Reviewed-on: https://go-review.googlesource.com/c/go/+/324530 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
9a99e728fe
commit
c790964ae4
@ -31,12 +31,12 @@ type x7[A any] struct{ foo7 }
|
|||||||
func main7() { var _ foo7 = x7[int]{} }
|
func main7() { var _ foo7 = x7[int]{} }
|
||||||
|
|
||||||
// crash 8
|
// crash 8
|
||||||
type foo8[A any] interface { type A }
|
type foo8[A any] interface { ~A }
|
||||||
func bar8[A foo8[A]](a A) {}
|
func bar8[A foo8[A]](a A) {}
|
||||||
func main8() {}
|
func main8() {}
|
||||||
|
|
||||||
// crash 9
|
// crash 9
|
||||||
type foo9[A any] interface { type foo9 /* ERROR cannot use interface */ [A] }
|
type foo9[A any] interface { ~/* ERROR cannot use interface */ foo9[A] }
|
||||||
func _() { var _ = new(foo9 /* ERROR interface contains type constraints */ [int]) }
|
func _() { var _ = new(foo9 /* ERROR interface contains type constraints */ [int]) }
|
||||||
|
|
||||||
// crash 12
|
// crash 12
|
||||||
|
@ -7,13 +7,13 @@ package p
|
|||||||
import "fmt"
|
import "fmt"
|
||||||
|
|
||||||
// Minimal test case.
|
// Minimal test case.
|
||||||
func _[T interface{type T}](x T) T{
|
func _[T interface{~T}](x T) T{
|
||||||
return x
|
return x
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test case from issue.
|
// Test case from issue.
|
||||||
type constr[T any] interface {
|
type constr[T any] interface {
|
||||||
type T
|
~T
|
||||||
}
|
}
|
||||||
|
|
||||||
func Print[T constr[T]](s []T) {
|
func Print[T constr[T]](s []T) {
|
||||||
|
@ -8,7 +8,7 @@ type T0 interface{
|
|||||||
}
|
}
|
||||||
|
|
||||||
type T1 interface{
|
type T1 interface{
|
||||||
type int
|
~int
|
||||||
}
|
}
|
||||||
|
|
||||||
type T2 interface{
|
type T2 interface{
|
||||||
|
@ -6,4 +6,4 @@ package p
|
|||||||
|
|
||||||
// A constraint must be an interface; it cannot
|
// A constraint must be an interface; it cannot
|
||||||
// be a type parameter, for instance.
|
// be a type parameter, for instance.
|
||||||
func _[A interface{ type int }, B A /* ERROR not an interface */ ]()
|
func _[A interface{ ~int }, B A /* ERROR not an interface */ ]()
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
|
|
||||||
package p
|
package p
|
||||||
|
|
||||||
func _[T interface{type map[string]int}](x T) {
|
func _[T interface{~map[string]int}](x T) {
|
||||||
_ = x == nil
|
_ = x == nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// simplified test case from issue
|
// simplified test case from issue
|
||||||
|
|
||||||
type PathParamsConstraint interface {
|
type PathParamsConstraint interface {
|
||||||
type map[string]string, []struct{key, value string}
|
~map[string]string | ~[]struct{key, value string}
|
||||||
}
|
}
|
||||||
|
|
||||||
type PathParams[T PathParamsConstraint] struct {
|
type PathParams[T PathParamsConstraint] struct {
|
||||||
|
@ -7,7 +7,7 @@ package p
|
|||||||
// Test case from issue.
|
// Test case from issue.
|
||||||
|
|
||||||
type Nat interface {
|
type Nat interface {
|
||||||
type Zero, Succ
|
Zero|Succ
|
||||||
}
|
}
|
||||||
|
|
||||||
type Zero struct{}
|
type Zero struct{}
|
||||||
@ -22,7 +22,7 @@ type I1 interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type I2 interface {
|
type I2 interface {
|
||||||
type int
|
~int
|
||||||
}
|
}
|
||||||
|
|
||||||
type I3 interface {
|
type I3 interface {
|
||||||
|
@ -17,7 +17,7 @@ func _[T any](x interface{}){
|
|||||||
}
|
}
|
||||||
|
|
||||||
type constraint interface {
|
type constraint interface {
|
||||||
type int
|
~int
|
||||||
}
|
}
|
||||||
|
|
||||||
func _[T constraint](x interface{}){
|
func _[T constraint](x interface{}){
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
package p
|
package p
|
||||||
|
|
||||||
func f[F interface{type *Q}, G interface{type *R}, Q, R any](q Q, r R) {}
|
func f[F interface{~*Q}, G interface{~*R}, Q, R any](q Q, r R) {}
|
||||||
|
|
||||||
func _() {
|
func _() {
|
||||||
f[*float64, *int](1, 2)
|
f[*float64, *int](1, 2)
|
||||||
|
@ -13,7 +13,7 @@ type N[T any] struct{}
|
|||||||
var _ N[] /* ERROR expecting type */
|
var _ N[] /* ERROR expecting type */
|
||||||
|
|
||||||
type I interface {
|
type I interface {
|
||||||
type map[int]int, []int
|
~map[int]int | ~[]int
|
||||||
}
|
}
|
||||||
|
|
||||||
func _[T I](i, j int) {
|
func _[T I](i, j int) {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
package issue45985
|
package issue45985
|
||||||
|
|
||||||
// TODO(gri): this error should be on app[int] below.
|
// TODO(gri): this error should be on app[int] below.
|
||||||
func app[S /* ERROR "type S = S does not match" */ interface{ type []T }, T any](s S, e T) S {
|
func app[S /* ERROR "type S = S does not match" */ interface{ ~[]T }, T any](s S, e T) S {
|
||||||
return append(s, e)
|
return append(s, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user