Add Fiber.abort() method.
This commit is contained in:
@@ -224,6 +224,15 @@ DEF_NATIVE(fiber_new)
|
|||||||
RETURN_OBJ(newFiber);
|
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)
|
DEF_NATIVE(fiber_call)
|
||||||
{
|
{
|
||||||
ObjFiber* runFiber = AS_FIBER(args[0]);
|
ObjFiber* runFiber = AS_FIBER(args[0]);
|
||||||
@@ -1048,6 +1057,7 @@ void wrenInitializeCore(WrenVM* vm)
|
|||||||
vm->fiberClass = defineClass(vm, "Fiber");
|
vm->fiberClass = defineClass(vm, "Fiber");
|
||||||
NATIVE(vm->fiberClass->obj.classObj, " instantiate", fiber_instantiate);
|
NATIVE(vm->fiberClass->obj.classObj, " instantiate", fiber_instantiate);
|
||||||
NATIVE(vm->fiberClass->obj.classObj, "new ", fiber_new);
|
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_yield);
|
||||||
NATIVE(vm->fiberClass->obj.classObj, "yield ", fiber_yield1);
|
NATIVE(vm->fiberClass->obj.classObj, "yield ", fiber_yield1);
|
||||||
NATIVE(vm->fiberClass, "call", fiber_call);
|
NATIVE(vm->fiberClass, "call", fiber_call);
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Fiber.abort("Abort!") // expect runtime error: Abort!
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Fiber.abort(123) // expect runtime error: Error message must be a string.
|
||||||
Reference in New Issue
Block a user