From: nobu.nakada@... Date: 2002-08-14T19:30:40+09:00 Subject: [ruby-dev:18011] Re: line number(Re: Re: [ruby-cvs] ruby: * random.c: replace with Mersenne Twister RNG.) なかだです。 At Mon, 12 Aug 2002 23:49:05 +0900, Yukihiro Matsumoto wrote: > |NODE_CFUNCと代入で正しくセットされてなかったので、追加のパッチ > |です。 > > んじゃあ、コミットしてください。 といわれてモタモタしてたのは、traceでの行番号がいまいちおかしかっ たのをいじってたんですが、二三気づいたことが。 1. 空メソッドからのreturnでtrace_funcに渡される行番号。 def foo p __LINE__ end def bar; end set_trace_func proc {|*a| p a[0,4] } foo bar 現状では1.6, 1.7ともに最後は ["call", "-", 4, :bar] ["return", "-", 10, :bar] となりますが、fooの呼び出しの最後が ["return", "-", 2, :foo] となることを考えると、こうなるべきではないかと思うのですが。 ["return", "-", 4, :bar] 2. 式の評価順序。 case NODE_MATCH2: result = rb_reg_match(rb_eval(self,node->nd_recv), rb_eval(self,node->nd_value)); case NODE_DOT2: case NODE_DOT3: result = rb_range_new(rb_eval(self, node->nd_beg), rb_eval(self, node->nd_end), nd_type(node) == NODE_DOT3); =~と..、...の左辺と右辺がどちらが先に評価されるかが処理系依存な わけですが、これはこれでいいんでしょうか。 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦