Initial commit: Go 1.23 release state
This commit is contained in:
46
test/typeparam/interfacearg.go
Normal file
46
test/typeparam/interfacearg.go
Normal file
@@ -0,0 +1,46 @@
|
||||
// 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
|
||||
|
||||
type I interface{}
|
||||
|
||||
type _S[T any] struct {
|
||||
x *T
|
||||
}
|
||||
|
||||
// F is a non-generic function, but has a type _S[I] which is instantiated from a
|
||||
// generic type. Test that _S[I] is successfully exported.
|
||||
func F() {
|
||||
v := _S[I]{}
|
||||
if v.x != nil {
|
||||
panic(v)
|
||||
}
|
||||
}
|
||||
|
||||
// Testing the various combinations of method expressions.
|
||||
type S1 struct{}
|
||||
|
||||
func (*S1) M() {}
|
||||
|
||||
type S2 struct{}
|
||||
|
||||
func (S2) M() {}
|
||||
|
||||
func _F1[T interface{ M() }](t T) {
|
||||
_ = T.M
|
||||
}
|
||||
|
||||
func F2() {
|
||||
_F1(&S1{})
|
||||
_F1(S2{})
|
||||
_F1(&S2{})
|
||||
}
|
||||
|
||||
func main() {
|
||||
F()
|
||||
F2()
|
||||
}
|
||||
Reference in New Issue
Block a user