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:
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
4
cont.c
|
@ -2702,7 +2702,7 @@ rb_fiber_s_yield(int argc, VALUE *argv, VALUE klass)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE
|
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);
|
VALUE exception = rb_make_exception(argc, argv);
|
||||||
|
|
||||||
|
@ -2718,7 +2718,7 @@ fiber_raise(rb_fiber_t *fiber, int argc, VALUE *argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
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);
|
return fiber_raise(fiber_ptr(fiber), argc, argv);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.
|
* fiber then suspends its execution until next time it is resumed.
|
||||||
*
|
*
|
||||||
* This function can also raise arbitrary exceptions injected from outside of
|
* 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
|
* the fiber using rb_fiber_raise().
|
||||||
* from C though.
|
|
||||||
*
|
*
|
||||||
* ```ruby
|
* ```ruby
|
||||||
* exc = Class.new Exception
|
* 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().
|
* @param[in] argv Passed to rb_fiber_resume().
|
||||||
* @exception rb_eException (See above)
|
* @exception rb_eException (See above)
|
||||||
* @return (See rb_fiber_resume() for details)
|
* @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);
|
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_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()
|
RBIMPL_SYMBOL_EXPORT_END()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue