diff options
Diffstat (limited to 'usr/austin/eval/value.go')
-rw-r--r-- | usr/austin/eval/value.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/usr/austin/eval/value.go b/usr/austin/eval/value.go index b050448a7..de5813e6d 100644 --- a/usr/austin/eval/value.go +++ b/usr/austin/eval/value.go @@ -537,6 +537,38 @@ func (t *FuncType) Zero() Value { } /* + * Multi-values + */ + +type multiV []Value + +func (v multiV) String() string { + res := "("; + for i, v := range v { + if i > 0 { + res += ", "; + } + res += v.String(); + } + return res + ")"; +} + +func (v multiV) Assign(o Value) { + omv := o.(multiV); + for i := range v { + v[i].Assign(omv[i]); + } +} + +func (t *MultiType) Zero() Value { + res := make([]Value, len(t.Elems)); + for i := 0; i < len(t.Elems); i++ { + res[i] = t.Elems[i].Zero(); + } + return multiV(res); +} + +/* * Universal constants */ |