зеркало из https://github.com/github/ruby.git
compile.c: kw splat after splat
* compile.c (setup_args): set keyword splat flag after splat arguments. [ruby-core:83638] [Bug #10856] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60613 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
10a1c8ca79
Коммит
d49fca8894
|
@ -4197,6 +4197,8 @@ setup_args(rb_iseq_t *iseq, LINK_ANCHOR *const args, const NODE *argn,
|
|||
INSERT_LIST(args_splat, tmp);
|
||||
nsplat++;
|
||||
*flag |= VM_CALL_ARGS_SPLAT;
|
||||
if (nd_type(argn->nd_body) == NODE_HASH)
|
||||
*flag |= VM_CALL_KW_SPLAT;
|
||||
|
||||
if (next_is_array) {
|
||||
int len = compile_array(iseq, args, argn->nd_head, COMPILE_ARRAY_TYPE_ARGS, NULL, flag, FALSE);
|
||||
|
|
|
@ -513,11 +513,17 @@ class TestKeywordArguments < Test::Unit::TestCase
|
|||
}
|
||||
o = {}
|
||||
assert_equal(:ok, m.f(**o), '[ruby-core:68124] [Bug #10856]')
|
||||
a = []
|
||||
assert_equal(:ok, m.f(*a, **o), '[ruby-core:83638] [Bug #10856]')
|
||||
|
||||
o = {a: 42}
|
||||
assert_equal({a: 42}, m.f2(**o), '[ruby-core:82280] [Bug #13791]')
|
||||
|
||||
assert_equal({a: 42}, m.f2("a".to_sym => 42), '[ruby-core:82291] [Bug #13793]')
|
||||
|
||||
o = {}
|
||||
a = [:ok]
|
||||
assert_equal(:ok, m.f2(*a, **o), '[ruby-core:83638] [Bug #10856]')
|
||||
end
|
||||
|
||||
def test_gced_object_in_stack
|
||||
|
|
Загрузка…
Ссылка в новой задаче