From: nobu@... Date: 2014-10-23T10:13:37+00:00 Subject: [ruby-dev:48695] [ruby-trunk - Bug #10421] [Closed] BasicObject継承クラスで object_id メソッドを定義すると redefining ... 警告が出る Issue #10421 has been updated by Nobuyoshi Nakada. Status changed from Open to Closed % Done changed from 0 to 100 Applied in changeset r48111. ---------- vm_method.c: no redefinition warnings for undefined methods * vm_method.c (rb_method_entry_make): warn redefinition only for already defined methods, but not for undefined methods. [ruby-dev:48691] [Bug #10421] ---------------------------------------- Bug #10421: BasicObject継承クラスで object_id メソッドを定義すると redefining ... 警告が出る https://bugs.ruby-lang.org/issues/10421#change-49609 * Author: Satoshi TAGOMORI * Status: Closed * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin12.0] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- BasicObject 継承クラスに通常 `#object_id` がありませんが、これだと pp などに該当オブジェクトを与えると NoMethodError 例外が出たりして実用上困るケースがあります。ただし `#object_id` を定義すると以下のような警告が出ます。 warning: redefining `object_id' may cause serious problems BasicObject には元々 `#object_id` は存在しないため redefining という警告はこの場合は誤りであり、また `#object_id` を定義することの危険については意図してBasicObjectを使っているプログラマには理解されているものと思います。 このため、この警告は BasicObject 継承クラスにおいては出さないのが適当かと思います。 -- https://bugs.ruby-lang.org/