Initial commit: Go 1.23 release state
This commit is contained in:
63
test/typeparam/issue50642.go
Normal file
63
test/typeparam/issue50642.go
Normal file
@@ -0,0 +1,63 @@
|
||||
// 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.
|
||||
|
||||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Temp[T any] struct {
|
||||
}
|
||||
|
||||
var temp, temp1 any
|
||||
var ch any
|
||||
|
||||
func (it Temp[T]) HasNext() bool {
|
||||
var ok bool
|
||||
temp1 = <-ch.(chan T)
|
||||
// test conversion of T to interface{} during an OAS2RECV
|
||||
temp, ok = <-ch.(chan T)
|
||||
return ok
|
||||
}
|
||||
|
||||
type MyInt int
|
||||
|
||||
func (i MyInt) String() string {
|
||||
return "a"
|
||||
}
|
||||
|
||||
type Stringer interface {
|
||||
String() string
|
||||
}
|
||||
|
||||
type Temp2[T Stringer] struct {
|
||||
}
|
||||
|
||||
var temp2 Stringer
|
||||
|
||||
func (it Temp2[T]) HasNext() string {
|
||||
var x map[int]T
|
||||
|
||||
var ok bool
|
||||
// test conversion of T to Stringer during an OAS2MAPR
|
||||
temp2, ok = x[43]
|
||||
_ = ok
|
||||
return temp2.String()
|
||||
}
|
||||
|
||||
func main() {
|
||||
ch1 := make(chan int, 2)
|
||||
ch1 <- 5
|
||||
ch1 <- 6
|
||||
ch = ch1
|
||||
iter := Temp[int]{}
|
||||
iter.HasNext()
|
||||
|
||||
iter2 := Temp2[MyInt]{}
|
||||
if got, want := iter2.HasNext(), "a"; got != want {
|
||||
panic(fmt.Sprintf("got %v, want %v", got, want))
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user