]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/switch3.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / switch3.go
index 95ff6ec3c2e449608e4e7d917907698388c9818b..403563223c7d11d7bbd82ace8e84e5d76538465f 100644 (file)
@@ -1,14 +1,16 @@
-// errchk $G -e $D/$F.go
+// 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.
 
-package main
+// Verify that erroneous switch statements are detected by the compiler.
+// Does not compile.
 
+package main
 
 type I interface {
-       M()
+       M()
 }
 
 func bad() {
@@ -16,11 +18,43 @@ func bad() {
        var s string
 
        switch i {
-       case s:  // ERROR "mismatched types string and I"
+       case s: // ERROR "mismatched types string and I|incompatible types"
        }
 
        switch s {
-       case i:  // ERROR "mismatched types I and string"
+       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:
        }
 }