[ruby-core:67174] [ruby-trunk - Bug #10659] [Closed] can't dup Fixnum (TypeError)

From: nobu@...
Date: 2014-12-28 04:54:42 UTC
List: ruby-core #67174
Issue #10659 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r49041.

----------
parse.y: fix internal IDs conflict

* parse.y (f_kwrest, new_args_tail_gen): unnamed rest keyword and
  keywords bits arguments should be unique.  since internal IDs
  depend on the local variable index in the current scope, new ID
  should be made before popping those vtables.
  [ruby-core:67157] [Bug #10659]

----------------------------------------
Bug #10659: can't dup Fixnum (TypeError)
https://bugs.ruby-lang.org/issues/10659#change-50660

* Author: Janko Marohnić
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: core
* Target version: current: 2.2.0
* ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
In Ruby 2.2 (older versions are good) there is a bug with unnamed keyword arguments when `super` is used.

```rb
module Foo
  def foo(**)
  end
end

class Bar
  include Foo

  def foo(bar: "bar", **)
    super
  end
end

Bar.new.foo # `dup': can't dup Fixnum (TypeError)
```

It happens when `super` is called. If I give the keyword arguments a name (`**` => `**options`) or if I remove the default keyword argument (`bar: "bar"`), the error doesn't happen.



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next