From: nobu.nakada@... Date: 2002-12-07T00:31:17+09:00 Subject: [ruby-dev:19024] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 なかだです。 At Fri, 15 Nov 2002 09:23:41 +0900, Nobuyoshi-Nakada wrote: > > > > で、[ruby-core:00576]をどうするか、だな。 > > > > > > え、入れるんですか? > > > > 実装方法がかっこいい。いつかデバガからもいじりたいなー。 > > いやむしろ、ヤバすぎ?という気が。それに他の関数から直接呼ばれた > ときのことを考えてないし。 > > どっちかというと、メソッド定義の時点でマークしておいて、NODEの > 書き換えはrb_call()あたりでやったほうがいいような気がしてます。 根本的に問題があることに気づきました。 class Blood def initialize(t) @type = t end attr_reader :type end [Object.new, Blood.new("A")].each do |x| p x.type end こんなコードを実行すると現在はこうなりますが -:9: warning: Object#type is deprecated; use Object#class Object "A" NODEのIDを書き換えるとこうなってしまいます。 -:9: warning: Object#type is deprecated; use Object#class Object Blood やはり、動的にしか分からないレシーバのクラスを、静的に決まって いるNODEに反映させること自体に無理があるということでしょう。 あえてやるなら、NODE_DEPRに使用したクラスを記録して警告済みか判 断するという手くらいしか思い付きませんが、そこまでやる程のこと かどうか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦