diff options
author | Robert Griesemer <gri@golang.org> | 2021-06-29 12:22:21 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2021-07-01 16:42:34 +0000 |
commit | 9cb1b0f50b5852b24e1a7b66f09faa1a521ae108 (patch) | |
tree | 72da1e367ffd794a681c2b5e08ed80cc28000fd3 /src/cmd/compile/internal/types2/testdata/fixedbugs | |
parent | 1cd505c353e4656ba28fd8de8708e8c8e6c21cbf (diff) | |
download | go-9cb1b0f50b5852b24e1a7b66f09faa1a521ae108.tar.gz go-9cb1b0f50b5852b24e1a7b66f09faa1a521ae108.zip |
[dev.typeparams] cmd/compile/internal/types2: delay interface check for type bounds
While at it, clean up code for collecting/declaring type parameters.
For #40789.
Change-Id: I0855137d5ee85c0ae2fa60d33b28c24a33132fbc
Reviewed-on: https://go-review.googlesource.com/c/go/+/331690
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/testdata/fixedbugs')
-rw-r--r-- | src/cmd/compile/internal/types2/testdata/fixedbugs/issue40789.go2 | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/types2/testdata/fixedbugs/issue40789.go2 b/src/cmd/compile/internal/types2/testdata/fixedbugs/issue40789.go2 new file mode 100644 index 0000000000..9eea4ad60a --- /dev/null +++ b/src/cmd/compile/internal/types2/testdata/fixedbugs/issue40789.go2 @@ -0,0 +1,37 @@ +// 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 + +import "fmt" + +func main() { + m := map[string]int{ + "a": 6, + "b": 7, + } + fmt.Println(copyMap[map[string]int, string, int](m)) +} + +type Map[K comparable, V any] interface { + map[K] V +} + +func copyMap[M Map[K, V], K comparable, V any](m M) M { + m1 := make(M) + for k, v := range m { + m1[k] = v + } + return m1 +} + +// simpler test case from the same issue + +type A[X comparable] interface { + []X +} + +func f[B A[X], X comparable]() B { + return nil +} |