mirror of
https://github.com/golang/go
synced 2024-11-26 03:57:57 -07:00
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>
This commit is contained in:
parent
783f166e65
commit
e76d6a456b
@ -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"
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user