From 16899111516fbff736dedacb2804e8ea83267968 Mon Sep 17 00:00:00 2001 From: Mel Date: Wed, 6 Jul 2022 01:52:19 +0200 Subject: Add Array push core method --- pkg/lang/vm/core.go | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'pkg') 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 { -- cgit 1.4.1