]> Cypherpunks.ru repositories - gostls13.git/commitdiff
cmd/compile: add test for non interface type switch
authorEmmanuel Odeke <emm.odeke@gmail.com>
Sat, 25 Mar 2017 22:17:59 +0000 (16:17 -0600)
committerJosh Bleecher Snyder <josharian@gmail.com>
Sat, 25 Mar 2017 22:52:54 +0000 (22:52 +0000)
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>

test/typeswitch3.go

index 287e32e71e1786caebf57b120df9c35eff4056eb..58d4cba2d0c8dac5af792a76ae77097c468d28e1 100644 (file)
@@ -18,26 +18,39 @@ type I interface {
        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"
+       }
+}