Deprecate rb_eval_cmd, add rb_eval_cmd_kw

rb_eval_cmd takes a safe level, and now that $SAFE is deprecated,
it should be deprecated as well.

Replace with rb_eval_cmd_kw, which takes a keyword flag.  Switch
the two callers to this function.
This commit is contained in:
Jeremy Evans 2019-09-25 15:49:21 -07:00
parent d03da13b17
commit c257303ae7
Notes: git 2019-11-18 08:01:11 +09:00
4 changed files with 13 additions and 5 deletions

View file

@ -1777,7 +1777,7 @@ rb_eval_string_wrap(const char *str, int *pstate)
}
VALUE
rb_eval_cmd(VALUE cmd, VALUE arg, int _level)
rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat)
{
enum ruby_tag_type state;
volatile VALUE val = Qnil; /* OK */
@ -1786,8 +1786,8 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int _level)
EC_PUSH_TAG(ec);
if ((state = EC_EXEC_TAG()) == TAG_NONE) {
if (!RB_TYPE_P(cmd, T_STRING)) {
val = rb_funcallv(cmd, idCall, RARRAY_LENINT(arg),
RARRAY_CONST_PTR(arg));
val = rb_funcallv_kw(cmd, idCall, RARRAY_LENINT(arg),
RARRAY_CONST_PTR(arg), kw_splat);
}
else {
val = eval_string_with_cref(rb_vm_top_self(), cmd, NULL, 0, 0);
@ -1799,6 +1799,13 @@ rb_eval_cmd(VALUE cmd, VALUE arg, int _level)
return val;
}
VALUE
rb_eval_cmd(VALUE cmd, VALUE arg, int _level)
{
rb_warn("rb_eval_cmd will be removed in Ruby 3.0");
return rb_eval_cmd_kw(cmd, arg, RB_NO_KEYWORDS);
}
/* block eval under the class/module context */
static VALUE