1 // Copyright 2020 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package p 6 7 type P *struct{} 8 9 func _() { 10 // want an error even if the switch is empty 11 var a struct{ _ func() } 12 switch a /* ERROR "cannot switch on a" */ { 13 } 14 15 switch a /* ERROR "cannot switch on a" */ { 16 case a: // no follow-on error here 17 } 18 19 // this is ok because f can be compared to nil 20 var f func() 21 switch f { 22 } 23 24 switch f { 25 case nil: 26 } 27 28 switch (func())(nil) { 29 case nil: 30 } 31 32 switch (func())(nil) { 33 case f /* ERRORx `invalid case f in switch on .* \(func can only be compared to nil\)` */ : 34 } 35 36 switch nil /* ERROR "use of untyped nil in switch expression" */ { 37 } 38 39 // this is ok 40 switch P(nil) { 41 case P(nil): 42 } 43 } 44