| // run -gcflags=-G=3 |
| |
| // 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 |
| |
| // Zero returns the zero value of T |
| func Zero[T any]() (_ T) { |
| return |
| } |
| |
| type AnyInt[X any] int |
| |
| func (AnyInt[X]) M() { |
| var have interface{} = Zero[X]() |
| var want interface{} = Zero[MyInt]() |
| |
| if have != want { |
| println("FAIL") |
| } |
| } |
| |
| type I interface{ M() } |
| |
| type MyInt int |
| type U = AnyInt[MyInt] |
| |
| var x = U(0) |
| var i I = x |
| |
| func main() { |
| x.M() |
| U.M(x) |
| (*U).M(&x) |
| |
| i.M() |
| I.M(x) |
| } |