diff --git a/_test/assign10.go b/_test/assign10.go new file mode 100644 index 00000000..1ec0f05f --- /dev/null +++ b/_test/assign10.go @@ -0,0 +1,10 @@ +package main + +func main() { + var a uint + a = 1 + 2 + println(a) +} + +// Output: +// 3 diff --git a/interp/run.go b/interp/run.go index 10c05be2..f25fc5ec 100644 --- a/interp/run.go +++ b/interp/run.go @@ -232,6 +232,8 @@ func assign(n *node) { svalue[i] = func(*frame) reflect.Value { return reflect.New(t).Elem() } case isRecursiveStruct(dest.typ, dest.typ.rtype): svalue[i] = genValueInterfacePtr(src) + case src.typ.untyped && !dest.typ.untyped: + svalue[i] = genValueAs(src, dest.typ.TypeOf()) default: svalue[i] = genValue(src) }