diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-05-24 16:48:34 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-06-20 19:35:12 +0900 |
commit | a58611dfb1bfc74fb1a51a9cd0ca8ac690c2f1f4 (patch) | |
tree | c168f6a4b56c0b159a573639fffcead139a28e28 /object.c | |
parent | 15db2e9496703d76b2d785a9e2a1554833706e06 (diff) |
Allow to just warn as bool expected, without an exception
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6039
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 24 |
1 files changed, 15 insertions, 9 deletions
@@ -3158,16 +3158,22 @@ rb_check_integer_type(VALUE val) } int -rb_bool_expected(VALUE obj, const char *flagname) +rb_bool_expected(VALUE obj, const char *flagname, int raise) { switch (obj) { - case Qtrue: case Qfalse: - break; - default: - rb_raise(rb_eArgError, "expected true or false as %s: %+"PRIsVALUE, - flagname, obj); + case Qtrue: + return TRUE; + case Qfalse: + return FALSE; + default: { + static const char message[] = "expected true or false as %s: %+"PRIsVALUE; + if (raise) { + rb_raise(rb_eArgError, message, flagname, obj); + } + rb_warning(message, flagname, obj); + return !NIL_P(obj); + } } - return obj != Qfalse; } int @@ -3176,7 +3182,7 @@ rb_opts_exception_p(VALUE opts, int default_value) static const ID kwds[1] = {idException}; VALUE exception; if (rb_get_kwargs(opts, kwds, 0, 1, &exception)) - return rb_bool_expected(exception, "exception"); + return rb_bool_expected(exception, "exception", TRUE); return default_value; } @@ -3562,7 +3568,7 @@ rb_f_float1(rb_execution_context_t *ec, VALUE obj, VALUE arg) static VALUE rb_f_float(rb_execution_context_t *ec, VALUE obj, VALUE arg, VALUE opts) { - int exception = rb_bool_expected(opts, "exception"); + int exception = rb_bool_expected(opts, "exception", TRUE); return rb_convert_to_float(arg, exception); } |