Issue #7743 has been reported by hsbt (Hiroshi SHIBATA). ---------------------------------------- Bug #7743: protected なメソッドを respond_to? で評価した時の結果が 1.9 と異なる https://bugs.ruby-lang.org/issues/7743 Author: hsbt (Hiroshi SHIBATA) Status: Open Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] 以下のようなコードを 1.9.3 と 2.0.0 で実行した時の結果が異なるようです。 % cat respond_to.rb class A def initialize p respond_to?(:foo) p respond_to?(:foo, true) end protected def foo end end A.new 実行結果は以下の通りです。 % ruby -v respond_to.rb ruby 1.9.3p375 (2013-01-18 revision 38876) [x86_64-darwin12.2.1] true true % ruby -v respond_to.rb ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] false true この挙動の違いは不具合と思うのですが確認していただけないでしょうか。 もし意図した挙動である場合、影響範囲が大きいので 1.9 の挙動に戻した方がよいと思います。
on 2013-01-27 13:25
on 2013-01-28 00:46
Issue #7743 has been updated by shugo (Shugo Maeda). Status changed from Open to Assigned Assignee changed from nobu (Nobuyoshi Nakada) to knu (Akinori MUSHA) hsbt (Hiroshi SHIBATA) wrote: > 以下のようなコードを 1.9.3 と 2.0.0 で実行した時の結果が異なるようです。 (snip) > この挙動の違いは不具合と思うのですが確認していただけないでしょうか。 > もし意図した挙動である場合、影響範囲が大きいので 1.9 の挙動に戻した方がよいと思います。 r34582で導入された意図的な変更だと思います。 [ruby-dev:40461]のスレッドで議論されたものです。 呼び出し元のコンテキストにおけるレシーバのクラスをチェックして、そのprotectedメソッド を呼べるクラスであればtrueを返すのが理想ではないかと思いますが、それが難しい場合は 互換性に配慮していったん元に戻すのがよいように思います。 ---------------------------------------- Bug #7743: protected なメソッドを respond_to? で評価した時の結果が 1.9 と異なる https://bugs.ruby-lang.org/issues/7743#change-35680 Author: hsbt (Hiroshi SHIBATA) Status: Assigned Priority: Normal Assignee: knu (Akinori MUSHA) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] 以下のようなコードを 1.9.3 と 2.0.0 で実行した時の結果が異なるようです。 % cat respond_to.rb class A def initialize p respond_to?(:foo) p respond_to?(:foo, true) end protected def foo end end A.new 実行結果は以下の通りです。 % ruby -v respond_to.rb ruby 1.9.3p375 (2013-01-18 revision 38876) [x86_64-darwin12.2.1] true true % ruby -v respond_to.rb ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] false true この挙動の違いは不具合と思うのですが確認していただけないでしょうか。 もし意図した挙動である場合、影響範囲が大きいので 1.9 の挙動に戻した方がよいと思います。
on 2013-01-28 07:56
Issue #7743 has been updated by hsbt (Hiroshi SHIBATA). Status changed from Assigned to Rejected 了解しました。 よくよく考えてみましたが、変更後の挙動の方が正しいと思いますのでクローズします。 影響のあったライブラリの方を直すことにします。 ご回答ありがとうございます。 ---------------------------------------- Bug #7743: protected なメソッドを respond_to? で評価した時の結果が 1.9 と異なる https://bugs.ruby-lang.org/issues/7743#change-35684 Author: hsbt (Hiroshi SHIBATA) Status: Rejected Priority: Normal Assignee: knu (Akinori MUSHA) Category: core Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] 以下のようなコードを 1.9.3 と 2.0.0 で実行した時の結果が異なるようです。 % cat respond_to.rb class A def initialize p respond_to?(:foo) p respond_to?(:foo, true) end protected def foo end end A.new 実行結果は以下の通りです。 % ruby -v respond_to.rb ruby 1.9.3p375 (2013-01-18 revision 38876) [x86_64-darwin12.2.1] true true % ruby -v respond_to.rb ruby 2.0.0dev (2013-01-27 trunk 38955) [x86_64-darwin12.2.1] false true この挙動の違いは不具合と思うのですが確認していただけないでしょうか。 もし意図した挙動である場合、影響範囲が大きいので 1.9 の挙動に戻した方がよいと思います。
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.