Feature #16364 ยป top-level-ruby2_keywords.patch
test/ruby/test_keyword.rb | ||
---|---|---|
assert_raise(FrozenError) { c.send(:ruby2_keywords, :baz) }
|
||
end
|
||
def test_top_ruby2_keywords
|
||
assert_in_out_err([], <<-INPUT, ["[1, 2, 3]", "{:k=>1}"], [])
|
||
def bar(*a, **kw)
|
||
p a, kw
|
||
end
|
||
ruby2_keywords def foo(*a)
|
||
bar(*a)
|
||
end
|
||
foo(1, 2, 3, k:1)
|
||
INPUT
|
||
end
|
||
def test_dig_kwsplat
|
||
kw = {}
|
||
h = {:a=>1}
|
vm_method.c | ||
---|---|---|
return rb_mod_private(argc, argv, rb_cObject);
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* ruby2_keywords(method_name, ...) -> self
|
||
*
|
||
* For the given method names, marks the method as passing keywords through
|
||
* a normal argument splat. See Module#ruby2_keywords in detail.
|
||
*/
|
||
static VALUE
|
||
top_ruby2_keywords(int argc, VALUE *argv, VALUE module)
|
||
{
|
||
return rb_mod_ruby2_keywords(argc, argv, rb_cObject);
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* module_function(symbol, ...) -> self
|
||
... | ... | |
"public", top_public, -1);
|
||
rb_define_private_method(rb_singleton_class(rb_vm_top_self()),
|
||
"private", top_private, -1);
|
||
rb_define_private_method(rb_singleton_class(rb_vm_top_self()),
|
||
"ruby2_keywords", top_ruby2_keywords, -1);
|
||
{
|
||
#define REPLICATE_METHOD(klass, id) do { \
|