aboutsummaryrefslogtreecommitdiff
path: root/test/typeswitch3.go
diff options
context:
space:
mode:
authorEmmanuel Odeke <emm.odeke@gmail.com>2017-03-25 16:17:59 -0600
committerJosh Bleecher Snyder <josharian@gmail.com>2017-03-25 22:52:54 +0000
commite76d6a456b734bd02f275303571c38bec295a6b5 (patch)
tree6006c953a2d8bc04daea9cee8b5e430d7f9c90f6 /test/typeswitch3.go
parent783f166e659558414d846d16bbe65e6fe9c7099b (diff)
downloadgo-e76d6a456b734bd02f275303571c38bec295a6b5.tar.gz
go-e76d6a456b734bd02f275303571c38bec295a6b5.zip
cmd/compile: add test for non interface type switch
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>
Diffstat (limited to 'test/typeswitch3.go')
-rw-r--r--test/typeswitch3.go29
1 files changed, 21 insertions, 8 deletions
diff --git a/test/typeswitch3.go b/test/typeswitch3.go
index 287e32e71e..58d4cba2d0 100644
--- a/test/typeswitch3.go
+++ b/test/typeswitch3.go
@@ -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"
+ }
+}