Project

General

Profile

Actions

Bug #17558

closed

ruby2_keywords ignores arguments after a block defined method

Added by nobu (Nobuyoshi Nakada) 3 months ago. Updated about 2 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:102153]

Description

The result of foo_bar2 should be the same as foo_bar1.

class C
  def bar(*args, **kw)
    [args, kw]
  end

  def nothing_1(*args)
  end

  define_method(:nothing_2) do |*args|
  end

  def foo_bar1(*args)
    bar(*args)
  end

  def foo_bar2(*args)
    bar(*args)
  end

  ruby2_keywords :nothing_1, :foo_bar1

  ruby2_keywords :nothing_2, :foo_bar2
end

c = C.new
p c.foo_bar1(a: 1) #=> [[], {:a=>1}]
p c.foo_bar2(a: 1) #=> [[{:a=>1}], {}]

patch

Actions #1

Updated by nobu (Nobuyoshi Nakada) 3 months ago

  • Description updated (diff)
Actions #2

Updated by nobu (Nobuyoshi Nakada) 3 months ago

  • Status changed from Open to Closed

Applied in changeset git|eeacdcb9a073c7d8ad703e0dc9faf229a5ebbe3c.


Fixed premature return

After setting ruby2_keywords for bmethod, the rest of arguments
had been ignored. [Bug #17558]

Updated by naruse (Yui NARUSE) 2 months ago

  • Backport changed from 2.5: DONTNEED, 2.6: DONTNEED, 2.7: REQUIRED, 3.0: REQUIRED to 2.5: DONTNEED, 2.6: DONTNEED, 2.7: REQUIRED, 3.0: DONE

ruby_3_0 0b372d9b1df46b82e5819d7592d1c6ba1eb866e1 merged revision(s) eeacdcb9a073c7d8ad703e0dc9faf229a5ebbe3c.

Actions #4

Updated by nagachika (Tomoyuki Chikanaga) about 2 months ago

  • Backport changed from 2.5: DONTNEED, 2.6: DONTNEED, 2.7: REQUIRED, 3.0: DONE to 2.5: DONTNEED, 2.6: DONTNEED, 2.7: DONE, 3.0: DONE

ruby_2_7 931815bfd86df603337194f3fcefb46bfe3e7940 merged revision(s) eeacdcb9a073c7d8ad703e0dc9faf229a5ebbe3c.

Actions

Also available in: Atom PDF