summaryrefslogtreecommitdiff
path: root/usr/austin/eval/value.go
diff options
context:
space:
mode:
Diffstat (limited to 'usr/austin/eval/value.go')
-rw-r--r--usr/austin/eval/value.go32
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
*/