aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2022-07-06 01:52:19 +0200
committerMel <einebeere@gmail.com>2022-07-06 14:05:28 +0200
commit16899111516fbff736dedacb2804e8ea83267968 (patch)
tree3d852ab6200a67562ab81e863766113329786876 /pkg
parent7ab4e6290d7131e4a401d36d8480b3c2fec9ae41 (diff)
downloadjinx-16899111516fbff736dedacb2804e8ea83267968.tar.zst
jinx-16899111516fbff736dedacb2804e8ea83267968.zip
Add Array push core method
Diffstat (limited to 'pkg')
-rw-r--r--pkg/lang/vm/core.go10
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 {