]> Cypherpunks.ru repositories - gostls13.git/blob - test/typeparam/issue47925c.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / typeparam / issue47925c.go
1 // run
2
3 // Copyright 2021 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 package main
8
9 type I[T any] interface {
10         foo()
11 }
12
13 type J[T any] interface {
14         foo()
15         bar()
16 }
17
18 //go:noinline
19 func f[T J[T]](x T) I[T] {
20         // contains a cast between two nonempty interfaces
21         return I[T](J[T](x))
22 }
23
24 type S struct {
25         x int
26 }
27
28 func (s *S) foo() {}
29 func (s *S) bar() {}
30
31 func main() {
32         i := f(&S{x: 7})
33         if i.(*S).x != 7 {
34                 panic("bad")
35         }
36 }