diff options
| author | Mel <einebeere@gmail.com> | 2022-08-11 01:25:47 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-11 01:25:47 +0000 |
| commit | 86f31acf6789be116dcc54ed85b069a37c0f7aa8 (patch) | |
| tree | bc7afd6a8c340825996d29c6cfd392ae42b4fbd5 /pkg/lang/vm/value/data.go | |
| parent | c46b2bc7ce6df1f2c6c9494ef08015ec29992da5 (diff) | |
| download | jinx-86f31acf6789be116dcc54ed85b069a37c0f7aa8.tar.zst jinx-86f31acf6789be116dcc54ed85b069a37c0f7aa8.zip | |
Actual modules and core
Diffstat (limited to 'pkg/lang/vm/value/data.go')
| -rw-r--r-- | pkg/lang/vm/value/data.go | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/pkg/lang/vm/value/data.go b/pkg/lang/vm/value/data.go index 39193d5..1cd258b 100644 --- a/pkg/lang/vm/value/data.go +++ b/pkg/lang/vm/value/data.go @@ -116,11 +116,31 @@ func (a ArrayData) Push(m mem.Mem, v Value) error { arr := data.(ArrayCell).Get() arr = append(arr, v) - m.Set(a.data, ArrayCell(arr)) + if err := m.Set(a.data, ArrayCell(arr)); err != nil { + return err + } return nil } +func (a ArrayData) Pop(m mem.Mem) (Value, error) { + data, err := m.Get(a.data) + if err != nil { + return Value{}, err + } + + arr := data.(ArrayCell).Get() + + popped := arr[len(arr)-1] + arr = arr[:len(arr)-1] + + if err := m.Set(a.data, ArrayCell(arr)); err != nil { + return Value{}, err + } + + return popped, nil +} + type NullData struct{} func (n NullData) String(_ mem.Mem) (string, error) { |
