github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/fixedbugs/issue50755.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package p 6 7 // The core type of M2 unifies with the type of m1 8 // during function argument type inference. 9 // M2's constraint is unnamed. 10 func f1[K1 comparable, E1 any](m1 map[K1]E1) {} 11 12 func f2[M2 map[string]int](m2 M2) { 13 f1(m2) 14 } 15 16 // The core type of M3 unifies with the type of m1 17 // during function argument type inference. 18 // M3's constraint is named. 19 type Map3 map[string]int 20 21 func f3[M3 Map3](m3 M3) { 22 f1(m3) 23 } 24 25 // The core type of M5 unifies with the core type of M4 26 // during constraint type inference. 27 func f4[M4 map[K4]int, K4 comparable](m4 M4) {} 28 29 func f5[M5 map[K5]int, K5 comparable](m5 M5) { 30 f4(m5) 31 } 32 33 // test case from issue 34 35 func Copy[MC ~map[KC]VC, KC comparable, VC any](dst, src MC) { 36 for k, v := range src { 37 dst[k] = v 38 } 39 } 40 41 func Merge[MM ~map[KM]VM, KM comparable, VM any](ms ...MM) MM { 42 result := MM{} 43 for _, m := range ms { 44 Copy(result, m) 45 } 46 return result 47 }