Backport #9298
closed
Backport r44420: unknown keyword error with unnamed rest keywords argument
Added by nobu (Nobuyoshi Nakada) over 9 years ago.
Updated over 9 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