Initial commit: Go 1.23 release state
This commit is contained in:
72
test/switch3.go
Normal file
72
test/switch3.go
Normal file
@@ -0,0 +1,72 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2011 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.
|
||||
|
||||
// Verify that erroneous switch statements are detected by the compiler.
|
||||
// Does not compile.
|
||||
|
||||
package main
|
||||
|
||||
type I interface {
|
||||
M()
|
||||
}
|
||||
|
||||
func bad() {
|
||||
var i I
|
||||
var s string
|
||||
|
||||
switch i {
|
||||
case s: // ERROR "mismatched types string and I|incompatible types"
|
||||
}
|
||||
|
||||
switch s {
|
||||
case i: // ERROR "mismatched types I and string|incompatible types"
|
||||
}
|
||||
|
||||
var m, m1 map[int]int
|
||||
switch m {
|
||||
case nil:
|
||||
case m1: // ERROR "can only compare map m to nil|map can only be compared to nil|cannot compare"
|
||||
default:
|
||||
}
|
||||
|
||||
var a, a1 []int
|
||||
switch a {
|
||||
case nil:
|
||||
case a1: // ERROR "can only compare slice a to nil|slice can only be compared to nil|cannot compare"
|
||||
default:
|
||||
}
|
||||
|
||||
var f, f1 func()
|
||||
switch f {
|
||||
case nil:
|
||||
case f1: // ERROR "can only compare func f to nil|func can only be compared to nil|cannot compare"
|
||||
default:
|
||||
}
|
||||
|
||||
var ar, ar1 [4]func()
|
||||
switch ar { // ERROR "cannot switch on"
|
||||
case ar1:
|
||||
default:
|
||||
}
|
||||
|
||||
var st, st1 struct{ f func() }
|
||||
switch st { // ERROR "cannot switch on"
|
||||
case st1:
|
||||
}
|
||||
}
|
||||
|
||||
func good() {
|
||||
var i interface{}
|
||||
var s string
|
||||
|
||||
switch i {
|
||||
case s:
|
||||
}
|
||||
|
||||
switch s {
|
||||
case i:
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user