aboutsummaryrefslogtreecommitdiff
path: root/pkg/lang/vm/value
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/lang/vm/value')
-rw-r--r--pkg/lang/vm/value/data.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go
index 1cd258b..59e4742 100644
--- a/pkg/lang/vm/value/data.go
+++ b/pkg/lang/vm/value/data.go
@@ -108,6 +108,20 @@ func (a ArrayData) At(m mem.Mem, i int) (Value, error) {
return arr[i], nil
}
+func (a ArrayData) Set(m mem.Mem, i int, v Value) error {
+ data, err := m.Get(a.data)
+ if err != nil {
+ return err
+ }
+ arr := data.(ArrayCell).Get()
+ arr[i] = v
+
+ if err := m.Set(a.data, ArrayCell(arr)); err != nil {
+ return err
+ }
+ return nil
+}
+
func (a ArrayData) Push(m mem.Mem, v Value) error {
data, err := m.Get(a.data)
if err != nil {