umx_compiler

UMX virtual machine "Monkey" interpreter / bytecode compiler
git clone git://bsandro.tech/umx_compiler
Log | Files | Refs

commit 64106aab37d2ec0151ef87b83cbaa1dd2481d178
parent 0e082d47a6552b29857ab3fd1e54e60a73ebe61f
Author: bsandro <email@bsandro.tech>
Date:   Tue, 28 Jun 2022 21:59:02 +0300

len() support for arrays

Diffstat:
Meval/builtins.go | 2++
Meval/eval_test.go | 1+
2 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/eval/builtins.go b/eval/builtins.go @@ -11,6 +11,8 @@ var builtins = map[string]*object.Builtin{ switch arg := args[0].(type) { case *object.String: return &object.Integer{Value: int64(len(arg.Value))} + case *object.Array: + return &object.Integer{Value: int64(len(arg.Elements))} default: return newError("unsupported `len` argument, got %s", args[0].Type()) } diff --git a/eval/eval_test.go b/eval/eval_test.go @@ -263,6 +263,7 @@ func TestBuiltinFunctions(t *testing.T) { {`len("four")`, 4}, {`len(1)`, "unsupported `len` argument, got INTEGER"}, {`len("one", "two")`, "wrong number of arguments (2 instead of 1)"}, + {`len([1,2,3,4,5])`, 5}, } for _, tt := range tests {