diff --git a/src/stdlib.cpp b/src/stdlib.cpp index edfde11..936664d 100644 --- a/src/stdlib.cpp +++ b/src/stdlib.cpp @@ -378,12 +378,19 @@ Result stdlib_task(const StackFrame& stack) { if (size == 0) return ERROR(ArgumentCountMismatch); Value task_id = TRY(params_array.get(0)); - if (!task_id.is()) return ERROR(TypeMismatch); + uint64_t num_task_id = 0; + + if (task_id.is()) { + num_task_id = (uint64_t)task_id.to()->value(); + } else if (task_id.is()) { + num_task_id = (uint64_t)TRY(get_stdlib_task(*task_id.to())); + } else { + return ERROR(TypeMismatch); + } Value task_params = TRY(params_array.slice(1, size)); - auto val = Value(TRY(Task::create((uint64_t)task_id.to()->value(), - *task_params.to()))); + auto val = Value(TRY(Task::create(num_task_id, *task_params.to()))); auto res = TRY(stack.set(0, val));