Project

General

Profile

Actions

Backport #9298

closed

Backport r44420: unknown keyword error with unnamed rest keywords argument

Added by nobu (Nobuyoshi Nakada) over 10 years ago. Updated about 10 years ago.

Status:
Closed

Description

The following code should not raise "unknown keyword" error.

  def f10(a: 1, **)
    a
  end

  f10(b: 42)
Actions #1

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Description updated (diff)
Actions #2

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

2.0.0 also needs it.

Actions #3

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

r44421 fixes a build error by clang.

Actions #4

Updated by naruse (Yui NARUSE) over 10 years ago

This conflicts with current ruby_2_1

Updated by naruse (Yui NARUSE) about 10 years ago

  • Status changed from Assigned to Feedback

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

  • Description updated (diff)

Updated by naruse (Yui NARUSE) about 10 years ago

  • 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.
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0