mirror of
https://github.com/golang/go
synced 2024-11-26 06:27:58 -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()
|
M()
|
||||||
}
|
}
|
||||||
|
|
||||||
func main(){
|
func main() {
|
||||||
var x I
|
var x I
|
||||||
switch x.(type) {
|
switch x.(type) {
|
||||||
case string: // ERROR "impossible"
|
case string: // ERROR "impossible"
|
||||||
println("FAIL")
|
println("FAIL")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Issue 2700: if the case type is an interface, nothing is impossible
|
// Issue 2700: if the case type is an interface, nothing is impossible
|
||||||
|
|
||||||
var r io.Reader
|
var r io.Reader
|
||||||
|
|
||||||
_, _ = r.(io.Writer)
|
_, _ = r.(io.Writer)
|
||||||
|
|
||||||
switch r.(type) {
|
switch r.(type) {
|
||||||
case io.Writer:
|
case io.Writer:
|
||||||
}
|
}
|
||||||
|
|
||||||
// Issue 2827.
|
// 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