summaryrefslogtreecommitdiffstats
path: root/src/internal/types/testdata/fixedbugs/issue42758.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/types/testdata/fixedbugs/issue42758.go')
-rw-r--r--src/internal/types/testdata/fixedbugs/issue42758.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/internal/types/testdata/fixedbugs/issue42758.go b/src/internal/types/testdata/fixedbugs/issue42758.go
new file mode 100644
index 0000000..6d75b10
--- /dev/null
+++ b/src/internal/types/testdata/fixedbugs/issue42758.go
@@ -0,0 +1,33 @@
+// Copyright 2020 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
+
+func _[T any](x interface{}){
+ switch x.(type) {
+ case T: // ok to use a type parameter
+ case int:
+ }
+
+ switch x.(type) {
+ case T:
+ case T /* ERROR duplicate case */ :
+ }
+}
+
+type constraint interface {
+ ~int
+}
+
+func _[T constraint](x interface{}){
+ switch x.(type) {
+ case T: // ok to use a type parameter even if type set contains int
+ case int:
+ }
+}
+
+func _(x constraint /* ERROR contains type constraints */ ) {
+ switch x.(type) { // no need to report another error
+ }
+}