Backport #9298
closed
Backport r44420: unknown keyword error with unnamed rest keywords argument
Added by nobu (Nobuyoshi Nakada) almost 11 years ago.
Updated over 10 years ago.
Description
The following code should not raise "unknown keyword" error.
def f10(a: 1, **)
a
end
f10(b: 42)
- Description updated (diff)
r44421 fixes a build error by clang.
This conflicts with current ruby_2_1
- Status changed from Assigned to Feedback
- Description updated (diff)
- Status changed from Feedback to Closed
- % Done changed from 0 to 100
Applied in changeset r45138.
merge revision(s) 44412,44413,44414,44420,44421: [Backport #9298]
test_method.rb, test_proc.rb: suppress warnings
* test/ruby/test_method.rb: suppress warnings in verbose mode.
* test/ruby/test_proc.rb: ditto.
* proc.c (rb_iseq_min_max_arity): maximum argument is unlimited if
having rest keywords argument. [ruby-core:53298] [Bug #8072]
* iseq.c (rb_iseq_parameters): push argument type symbol only for
unnamed rest keywords argument.
* compile.c (iseq_set_arguments): set arg_keyword_check from
nd_cflag, which is set by parser. internal ID is used for
unnamed keyword rest argument, which should be separated from no
keyword check.
* iseq.c (rb_iseq_parameters): if no keyword check, keyword rest is
present.
* parse.y (new_args_tail_gen): set keywords check to nd_cflag, which
equals to that keyword rest is not present.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0