mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 22:28:45 +01:00
Add Fiber.abort() method.
This commit is contained in:
@ -224,6 +224,15 @@ DEF_NATIVE(fiber_new)
|
||||
RETURN_OBJ(newFiber);
|
||||
}
|
||||
|
||||
DEF_NATIVE(fiber_abort)
|
||||
{
|
||||
if (!validateString(vm, args, 1, "Error message")) return PRIM_ERROR;
|
||||
|
||||
// Move the error message to the return position.
|
||||
args[0] = args[1];
|
||||
return PRIM_ERROR;
|
||||
}
|
||||
|
||||
DEF_NATIVE(fiber_call)
|
||||
{
|
||||
ObjFiber* runFiber = AS_FIBER(args[0]);
|
||||
@ -1048,6 +1057,7 @@ void wrenInitializeCore(WrenVM* vm)
|
||||
vm->fiberClass = defineClass(vm, "Fiber");
|
||||
NATIVE(vm->fiberClass->obj.classObj, " instantiate", fiber_instantiate);
|
||||
NATIVE(vm->fiberClass->obj.classObj, "new ", fiber_new);
|
||||
NATIVE(vm->fiberClass->obj.classObj, "abort ", fiber_abort);
|
||||
NATIVE(vm->fiberClass->obj.classObj, "yield", fiber_yield);
|
||||
NATIVE(vm->fiberClass->obj.classObj, "yield ", fiber_yield1);
|
||||
NATIVE(vm->fiberClass, "call", fiber_call);
|
||||
|
||||
7
test/fiber/abort.wren
Normal file
7
test/fiber/abort.wren
Normal file
@ -0,0 +1,7 @@
|
||||
var fiber = new Fiber {
|
||||
Fiber.abort("Error message.")
|
||||
}
|
||||
|
||||
IO.print(fiber.try) // expect: Error message.
|
||||
IO.print(fiber.isDone) // expect: true
|
||||
IO.print(fiber.error) // expect: Error message.
|
||||
1
test/fiber/abort_main_fiber.wren
Normal file
1
test/fiber/abort_main_fiber.wren
Normal file
@ -0,0 +1 @@
|
||||
Fiber.abort("Abort!") // expect runtime error: Abort!
|
||||
1
test/fiber/abort_wrong_arg_type.wren
Normal file
1
test/fiber/abort_wrong_arg_type.wren
Normal file
@ -0,0 +1 @@
|
||||
Fiber.abort(123) // expect runtime error: Error message must be a string.
|
||||
Reference in New Issue
Block a user