aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ruby/intern.h1
-rw-r--r--signal.c2
-rw-r--r--variable.c2
-rw-r--r--vm_eval.c13
4 files changed, 13 insertions, 5 deletions
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index 8ce3ed721c..90d1254311 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -435,6 +435,7 @@ void rb_attr(VALUE,ID,int,int,int);
int rb_method_boundp(VALUE, ID, int);
int rb_method_basic_definition_p(VALUE, ID);
VALUE rb_eval_cmd(VALUE, VALUE, int);
+VALUE rb_eval_cmd_kw(VALUE, VALUE, int);
int rb_obj_respond_to(VALUE, ID, int);
int rb_respond_to(VALUE, ID);
NORETURN(VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker));
diff --git a/signal.c b/signal.c
index 17aca47692..68d68c54bf 100644
--- a/signal.c
+++ b/signal.c
@@ -1043,7 +1043,7 @@ signal_exec(VALUE cmd, int sig)
EC_PUSH_TAG(ec);
if ((state = EC_EXEC_TAG()) == TAG_NONE) {
VALUE signum = INT2NUM(sig);
- rb_eval_cmd(cmd, rb_ary_new3(1, signum), 0);
+ rb_eval_cmd_kw(cmd, rb_ary_new3(1, signum), RB_NO_KEYWORDS);
}
EC_POP_TAG();
ec = GET_EC();
diff --git a/variable.c b/variable.c
index 4b3b172833..4fdffcb691 100644
--- a/variable.c
+++ b/variable.c
@@ -526,7 +526,7 @@ rb_define_virtual_variable(
static void
rb_trace_eval(VALUE cmd, VALUE val)
{
- rb_eval_cmd(cmd, rb_ary_new3(1, val), 0);
+ rb_eval_cmd_kw(cmd, rb_ary_new3(1, val), RB_NO_KEYWORDS);
}
VALUE
diff --git a/vm_eval.c b/vm_eval.c
index 8b557fab1c..c3f12d7836 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -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