...
Run Format

Source file test/switch3.go

Documentation: test

  // 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"
  	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"
  	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"
  	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:
  	}
  }
  

View as plain text