Ensure that we have a test for when the compiler
encounters a type switch on a non-interface value.
Change-Id: Icb222f986894d0190e1241ca65396b4950e7d14f
Reviewed-on: https://go-review.googlesource.com/38661
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
M()
}
-func main(){
+func main() {
var x I
switch x.(type) {
- case string: // ERROR "impossible"
+ case string: // ERROR "impossible"
println("FAIL")
}
-
+
// Issue 2700: if the case type is an interface, nothing is impossible
-
+
var r io.Reader
-
+
_, _ = r.(io.Writer)
-
+
switch r.(type) {
case io.Writer:
}
-
+
// Issue 2827.
- switch _ := r.(type) { // ERROR "invalid variable name _|no new variables"
+ switch _ := r.(type) { // ERROR "invalid variable name _|no new variables"
}
}
+func noninterface() {
+ var i int
+ switch i.(type) { // ERROR "cannot type switch on non-interface value"
+ case string:
+ case int:
+ }
+ type S struct {
+ name string
+ }
+ var s S
+ switch s.(type) { // ERROR "cannot type switch on non-interface value"
+ }
+}