| // 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 /* ERROR cannot compare */ : |
| } |
| |
| switch nil /* ERROR use of untyped nil in switch expression */ { |
| } |
| |
| // this is ok |
| switch P(nil) { |
| case P(nil): |
| } |
| } |