| // 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 |
| } |
| } |