diff options
| author | Mel <einebeere@gmail.com> | 2022-07-06 01:52:19 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-07-06 14:05:28 +0200 |
| commit | 16899111516fbff736dedacb2804e8ea83267968 (patch) | |
| tree | 3d852ab6200a67562ab81e863766113329786876 | |
| parent | 7ab4e6290d7131e4a401d36d8480b3c2fec9ae41 (diff) | |
| download | jinx-16899111516fbff736dedacb2804e8ea83267968.tar.zst jinx-16899111516fbff736dedacb2804e8ea83267968.zip | |
Add Array push core method
| -rw-r--r-- | pkg/lang/vm/core.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/pkg/lang/vm/core.go b/pkg/lang/vm/core.go index 7d5aefe..477cee8 100644 --- a/pkg/lang/vm/core.go +++ b/pkg/lang/vm/core.go @@ -40,6 +40,7 @@ func (vm *VM) createCoreArrayType() value.Type { Kind: value.ArrayType, Methods: map[string]value.FunctionData{ "length": makeCoreFn(vm.coreArrayLength, 0), + "push": makeCoreFn(vm.coreArrayPush, 1), }, } } @@ -73,6 +74,15 @@ func (vm *VM) coreArrayLength(args []value.Value) (value.Value, error) { return res, nil } +func (vm *VM) coreArrayPush(args []value.Value) (value.Value, error) { + a, err := ensureTypeThis[value.ArrayData](vm, value.ArrayType) + if err != nil { + return value.Value{}, err + } + + return value.Value{}, a.Push(vm.memory, args[0]) +} + func (vm *VM) coreTypeRefIntrAddMethod(args []value.Value) (value.Value, error) { ref, err := ensureTypeThis[value.TypeRefData](vm, value.TypeRefType) if err != nil { |
