diff --git a/_test/interface43.go b/_test/interface43.go new file mode 100644 index 00000000..e7ee6438 --- /dev/null +++ b/_test/interface43.go @@ -0,0 +1,12 @@ +package main + +import "fmt" + +func main() { + v := interface{}(nil) + + fmt.Println(v) +} + +// Output: +// diff --git a/interp/run.go b/interp/run.go index f3e83215..efe1f806 100644 --- a/interp/run.go +++ b/interp/run.go @@ -225,6 +225,9 @@ func convert(n *node) { next := getExec(n.tnext) if c.isNil() { // convert nil to type + if n.child[0].typ.cat == interfaceT { + typ = reflect.TypeOf((*valueInterface)(nil)).Elem() + } n.exec = func(f *frame) bltn { dest(f).Set(reflect.New(typ).Elem()) return next