| -- H-rename -- |
| //go:build go1.18 |
| // +build go1.18 |
| |
| package generics |
| |
| type H[P any] struct { |
| F int |
| } |
| |
| func (H[_]) M() {} |
| |
| func F[P any](P) { |
| var p P //@rename("P", "Q") |
| _ = p |
| } |
| |
| func _() { |
| var x H[int] //@rename("G", "H") |
| _ = x.F //@rename("F", "K") |
| x.M() //@rename("M", "N") |
| |
| var y H[string] |
| _ = y.F |
| y.M() |
| } |
| |
| -- K-rename -- |
| //go:build go1.18 |
| // +build go1.18 |
| |
| package generics |
| |
| type G[P any] struct { |
| K int |
| } |
| |
| func (G[_]) M() {} |
| |
| func F[P any](P) { |
| var p P //@rename("P", "Q") |
| _ = p |
| } |
| |
| func _() { |
| var x G[int] //@rename("G", "H") |
| _ = x.K //@rename("F", "K") |
| x.M() //@rename("M", "N") |
| |
| var y G[string] |
| _ = y.K |
| y.M() |
| } |
| |
| -- N-rename -- |
| //go:build go1.18 |
| // +build go1.18 |
| |
| package generics |
| |
| type G[P any] struct { |
| F int |
| } |
| |
| func (G[_]) N() {} |
| |
| func F[P any](P) { |
| var p P //@rename("P", "Q") |
| _ = p |
| } |
| |
| func _() { |
| var x G[int] //@rename("G", "H") |
| _ = x.F //@rename("F", "K") |
| x.N() //@rename("M", "N") |
| |
| var y G[string] |
| _ = y.F |
| y.N() |
| } |
| |
| -- Q-rename -- |
| //go:build go1.18 |
| // +build go1.18 |
| |
| package generics |
| |
| type G[P any] struct { |
| F int |
| } |
| |
| func (G[_]) M() {} |
| |
| func F[Q any](Q) { |
| var p Q //@rename("P", "Q") |
| _ = p |
| } |
| |
| func _() { |
| var x G[int] //@rename("G", "H") |
| _ = x.F //@rename("F", "K") |
| x.M() //@rename("M", "N") |
| |
| var y G[string] |
| _ = y.F |
| y.M() |
| } |
| |