Project

General

Profile

Actions

Bug #3445

closed

1.9.2-preview3 で Object#extend すると public_methods(false) からメソッド名が消える

Added by mame (Yusuke Endoh) over 14 years ago. Updated over 13 years ago.

Status:
Closed
Target version:
ruby -v:
1.9.2-preview3
Backport:

Description

=begin
[ruby-dev:41553] が redmine ML 連携の不調でチケット化されなかった
ようなので、手動で登録します。


近永と申します。

1.9.2-preview3 および trunk にて、以下のように Object#extend すると
public_methods(false) で返すメソッドリストから元々あったメソッドが消えます。
これは仕様変更でしょうか? 1.9.1 および 1.9.2-preview1 では
どちらも元のメソッド + extend したモジュールの public メソッドを返していました。
NEWS ファイルはざっと目を通しましたが該当しそうなところは見つけられませんでした。

module M
def m1; end
def m2; end
module_function :m2
end

class A
def a; end
end

obj = A.new
p obj.public_methods(false) # => [:a]

obj.extend(M)
p obj.public_methods(false) # => trunk, 1.9.2-preview3 => []
# => 1.9.1, 1.9.2-preview1 => [:m1, :a]

--
Chikanaga Tomoyuki
Nippon Control System Corp.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0