1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

rb_fiber_raise(): add doxygen

Must not be a bad idea to improve documents.
This commit is contained in:
卜部昌平 2021-09-30 13:26:56 +09:00 committed by Samuel Williams
parent 565649cfe8
commit 90f2ab9d62
Notes: git 2021-09-30 16:55:51 +09:00
2 changed files with 25 additions and 11 deletions

4
cont.c
View file

@ -2702,7 +2702,7 @@ rb_fiber_s_yield(int argc, VALUE *argv, VALUE klass)
}
static VALUE
fiber_raise(rb_fiber_t *fiber, int argc, VALUE *argv)
fiber_raise(rb_fiber_t *fiber, int argc, const VALUE *argv)
{
VALUE exception = rb_make_exception(argc, argv);
@ -2718,7 +2718,7 @@ fiber_raise(rb_fiber_t *fiber, int argc, VALUE *argv)
}
VALUE
rb_fiber_raise(VALUE fiber, int argc, VALUE *argv)
rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv)
{
return fiber_raise(fiber_ptr(fiber), argc, argv);
}

View file

@ -139,8 +139,7 @@ VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat)
* fiber then suspends its execution until next time it is resumed.
*
* This function can also raise arbitrary exceptions injected from outside of
* the fiber, using `Fiber#raise` Ruby level API. There is no way to do that
* from C though.
* the fiber using rb_fiber_raise().
*
* ```ruby
* exc = Class.new Exception
@ -159,12 +158,6 @@ VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat)
* @param[in] argv Passed to rb_fiber_resume().
* @exception rb_eException (See above)
* @return (See rb_fiber_resume() for details)
*
* @internal
*
* "There is no way to do that from C" is a lie. But @shyouhei doesn't think
* this very intentionally obfuscated way to raise arbitrary exceptions from C
* is an official C API. Extension libraries must not know this fact.
*/
VALUE rb_fiber_yield(int argc, const VALUE *argv);
@ -239,7 +232,28 @@ VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv);
*/
VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
VALUE rb_fiber_raise(VALUE fiber, int argc, VALUE *argv);
/**
* Identical to rb_fiber_resume() but instead of resuming normal execution of
* the passed fiber, it raises the given exception in it. From inside of the
* fiber this would be seen as if rb_fiber_yield() raised.
*
* This function does return in case the passed fiber gracefully handled the
* passed exception. But if it does not, the raised exception propagates out
* of the passed fiber; this function then does not return.
*
* Parameters are passed to rb_make_exception() to create an exception object.
* See its document for what are allowed here.
*
* It is a failure to call this function against a fiber which is resuming,
* have never run yet, or has already finished running.
*
* @param[out] fiber Where exception is raised.
* @param[in] argc Passed as-is to rb_make_exception().
* @param[in] argv Passed as-is to rb_make_exception().
* @exception rb_eFiberError `fiber` is terminated etc.
* @return (See rb_fiber_resume() for details)
*/
VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv);
RBIMPL_SYMBOL_EXPORT_END()