Bug #6660

prepend したクラスの instance_methods(false)が空になる

Added by Tomoyuki Chikanaga over 2 years ago. Updated over 2 years ago.

[ruby-dev:45863]
Status:Closed
Priority:Normal
Assignee:Tomoyuki Chikanaga
ruby -v:ruby 2.0.0dev (2012-06-27 trunk 36240) [x86_64-darwin10.8.0] Backport:

Description

Module#prepend を実行したクラスの instance_methods(false)を実行すると結果が常に空になってしまうようです。

パッチを添付します。

prepend_instance_methods_false.patch Magnifier (1.42 KB) Tomoyuki Chikanaga, 06/28/2012 03:42 AM

Associated revisions

Revision 36243
Added by Tomoyuki Chikanaga over 2 years ago

  • class.c (class_instance_method_list): consider prepended Class/Module
    when recur != 0. [Bug #6660]

  • test/ruby/test_module.rb (test_prepend_instance_methods_false): add
    a test for it.

Revision 36243
Added by Tomoyuki Chikanaga over 2 years ago

  • class.c (class_instance_method_list): consider prepended Class/Module
    when recur != 0. [Bug #6660]

  • test/ruby/test_module.rb (test_prepend_instance_methods_false): add
    a test for it.

History

#1 Updated by Nobuyoshi Nakada over 2 years ago

  • Status changed from Open to Assigned
  • Assignee changed from Nobuyoshi Nakada to Tomoyuki Chikanaga

よいと思います。
お願いします。

#2 Updated by Tomoyuki Chikanaga over 2 years ago

なかださん、ありがとうございます。コミットします。

しかし今度は prepend したクラスのオブジェクトに特異クラスを作ってから Object#methods(false) した時にどうなるかというのが気になってきました。
prepend した時に作られる IClass に何かフラグが付けられるといいような気がしてきました。

#3 Updated by Tomoyuki Chikanaga over 2 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r36243.
Tomoyuki, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • class.c (class_instance_method_list): consider prepended Class/Module
    when recur != 0. [Bug #6660]

  • test/ruby/test_module.rb (test_prepend_instance_methods_false): add
    a test for it.

Also available in: Atom PDF