From 45dea57588b9485b916ebdddd7eaec58199a00ac Mon Sep 17 00:00:00 2001 From: nobu Date: Sat, 23 Feb 2013 22:51:45 +0000 Subject: [PATCH] compile.c: no keyword check if kw_rest * compile.c (iseq_set_arguments): no keyword check if any keyword rest argument exists, even unnamed. [ruby-core:52744] [Bug #7922] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ compile.c | 1 - test/ruby/test_syntax.rb | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 1db177e462..df38fa6c0d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Sun Feb 24 07:51:28 2013 Nobuyoshi Nakada + + * compile.c (iseq_set_arguments): no keyword check if any keyword rest + argument exists, even unnamed. [ruby-core:52744] [Bug #7922] + +Sun Feb 24 07:50:53 2013 Nobuyoshi Nakada + + * compile.c (iseq_set_arguments): no keyword check if any keyword rest + argument exists, even unnamed. [ruby-core:52744] [Bug #7922] + Sat Feb 23 16:51:00 2013 Zachary Scott * thread.c: Documentation for Thread#backtrace_locations diff --git a/compile.c b/compile.c index 5e0b61572e..fc5229fd9b 100644 --- a/compile.c +++ b/compile.c @@ -1204,7 +1204,6 @@ iseq_set_arguments(rb_iseq_t *iseq, LINK_ANCHOR *optargs, NODE *node_args) else if (args->kw_rest_arg) { iseq->arg_keyword = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid); COMPILE(optargs, "kwarg", args->kw_rest_arg); - iseq->arg_keyword_check = (args->kw_rest_arg->nd_vid & ID_SCOPE_MASK) == ID_JUNK; ADD_INSN(optargs, nd_line(args->kw_rest_arg), pop); } else { diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 2877491cdc..bc29007359 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -77,6 +77,9 @@ class TestSyntax < Test::Unit::TestCase eval("def o.m(k: 0) k end") end assert_equal(42, o.m(k: 42), '[ruby-core:45744]') + bug7922 = '[ruby-core:52744] [Bug #7922]' + def o.bug7922(**) end + assert_nothing_raised(ArgumentError, bug7922) {o.bug7922(foo: 42)} end def test_keyword_splat