| // 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 |
| |
| type P *struct{} |
| |
| func _() { |
| // want an error even if the switch is empty |
| var a struct{ _ func() } |
| switch a /* ERROR "cannot switch on a" */ { |
| } |
| |
| switch a /* ERROR "cannot switch on a" */ { |
| case a: // no follow-on error here |
| } |
| |
| // this is ok because f can be compared to nil |
| var f func() |
| switch f { |
| } |
| |
| switch f { |
| case nil: |
| } |
| |
| switch (func())(nil) { |
| case nil: |
| } |
| |
| switch (func())(nil) { |
| case f /* ERRORx `invalid case f in switch on .* \(func can only be compared to nil\)` */ : |
| } |
| |
| switch nil /* ERROR "use of untyped nil in switch expression" */ { |
| } |
| |
| // this is ok |
| switch P(nil) { |
| case P(nil): |
| } |
| } |