1
0
mirror of https://github.com/golang/go synced 2024-11-26 07:38:00 -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:
Robert Griesemer 2021-06-02 15:45:43 -07:00
parent 9a99e728fe
commit c790964ae4
10 changed files with 14 additions and 14 deletions

View File

@ -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

View File

@ -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) {

View File

@ -8,7 +8,7 @@ type T0 interface{
} }
type T1 interface{ type T1 interface{
type int ~int
} }
type T2 interface{ type T2 interface{

View File

@ -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 */ ]()

View File

@ -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 {

View File

@ -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 {

View File

@ -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{}){

View File

@ -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)

View File

@ -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) {

View File

@ -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)
} }