fix: handle selector expression in type switch
This commit is contained in:
committed by
Traefiker Bot
parent
786ea366ab
commit
d44e4af527
17
_test/switch21.go
Normal file
17
_test/switch21.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
switch v := err.(type) {
|
||||||
|
case fmt.Formatter:
|
||||||
|
println("formatter")
|
||||||
|
default:
|
||||||
|
fmt.Println(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// <nil>
|
||||||
@@ -173,6 +173,10 @@ func (interp *Interpreter) cfg(root *node) ([]*node, error) {
|
|||||||
switch sym, _, ok := sc.lookup(n.child[0].ident); {
|
switch sym, _, ok := sc.lookup(n.child[0].ident); {
|
||||||
case ok && sym.kind == typeSym:
|
case ok && sym.kind == typeSym:
|
||||||
typ = sym.typ
|
typ = sym.typ
|
||||||
|
case n.child[0].kind == selectorExpr:
|
||||||
|
if typ, err = nodeType(interp, sc, n.child[0]); err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
case n.child[0].ident == "nil":
|
case n.child[0].ident == "nil":
|
||||||
typ = sc.getType("interface{}")
|
typ = sc.getType("interface{}")
|
||||||
default:
|
default:
|
||||||
|
|||||||
Reference in New Issue
Block a user