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); {
|
||||
case ok && sym.kind == typeSym:
|
||||
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":
|
||||
typ = sc.getType("interface{}")
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user