| // Copyright 2022 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 p |
| |
| type Map map[string]int |
| |
| func f[M ~map[K]V, K comparable, V any](M) {} |
| func g[M map[K]V, K comparable, V any](M) {} |
| |
| func _[M1 ~map[K]V, M2 map[K]V, K comparable, V any]() { |
| var m1 M1 |
| f(m1) |
| g( /* ERROR M1 does not implement map\[K\]V */ m1) // M1 has tilde |
| |
| var m2 M2 |
| f(m2) |
| g(m2) // M1 does not have tilde |
| |
| var m3 Map |
| f(m3) |
| g( /* ERROR Map does not implement map\[string\]int */ m3) // M in g does not have tilde |
| } |