Project

General

Profile

Actions

Bug #10659

closed

can't dup Fixnum (TypeError)

Added by janko (Janko Marohnić) over 9 years ago. Updated about 9 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
[ruby-core:67157]

Description

In Ruby 2.2 (older versions are good) there is a bug with unnamed keyword arguments when super is used.

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.

Updated by nobu (Nobuyoshi Nakada) about 9 years ago

  • 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]

Updated by usa (Usaku NAKAMURA) about 9 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED

Updated by naruse (Yui NARUSE) about 9 years ago

  • Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE

ruby_2_2 r49081 merged revision(s) 49041.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0