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);
|
||||
|
||||
@@ -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