1// errorcheck
2
3// Copyright 2011 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Verify that erroneous type switches are caught be the compiler.
8// Issue 2700, among other things.
9// Does not compile.
10
11package main
12
13import (
14	"io"
15)
16
17type I interface {
18	M()
19}
20
21func main(){
22	var x I
23	switch x.(type) {
24	case string:	// ERROR "impossible"
25		println("FAIL")
26	}
27
28	// Issue 2700: if the case type is an interface, nothing is impossible
29
30	var r io.Reader
31
32	_, _ = r.(io.Writer)
33
34	switch r.(type) {
35	case io.Writer:
36	}
37
38	// Issue 2827.
39	switch _ := r.(type) {  // ERROR "invalid variable name _|no new variables"
40	}
41}
42
43
44