Project

General

Profile

Actions

Bug #7987

closed

Method#parameters should consider a prepended or refined methd

Bug #7987: Method#parameters should consider a prepended or refined methd

Added by no6v (Nobuhiro IMAI) over 12 years ago. Updated over 11 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-02-28 trunk 39535) [x86_64-linux]
Backport:
[ruby-core:53037]

Description

In the following example, Method#parameters tell the number of argument is one,
but actual methods take two arguments. I got confused..

 RUBY_DESCRIPTION # => "ruby 2.1.0dev (2013-02-28 trunk 39535) [x86_64-linux]" module PM def m(a, b) :pm end end class PC prepend PM def m(a) :pc end end pm = PC.instance_method(:m) pm.owner # => #<PC:0x00000001285888> pm.parameters # => [[:req, :a]] pc = PC.new pc.method(:m).owner # => #<PC:0x00000001285888> pc.method(:m).parameters # => [[:req, :a]] pc.m(:a) # => ArgumentError pc.m(:a, :b) # => :pm class RC def m(a) :rc end end module RM refine RC do # !> Refinements are experimental, and the behavior may change in future versions of Ruby! def m(a, b) :rm end end end using RM rm = RC.instance_method(:m) rm.owner # => RC rm.parameters # => [[:req, :a]] rc = RC.new rc.method(:m).owner # => RC rc.method(:m).parameters # => [[:req, :a]] rc.m(:a) # => ArgumentError rc.m(:a, :b) # => :rm 

Related issues 1 (0 open1 closed)

Updated by nobu (Nobuyoshi Nakada) over 11 years ago Actions #1 [ruby-core:62130]

  • Description updated (diff)
  • Status changed from Open to Closed

Seems fixed already.

Updated by nobu (Nobuyoshi Nakada) over 11 years ago Actions #2 [ruby-core:62131]

  • Related to Bug #7993: owner of methods defined after using Module#prepend added
Actions

Also available in: PDF Atom