From: nobu.nakada@... Date: 2002-07-11T21:36:01+09:00 Subject: [ruby-dev:17697] [PATCH] line number in #{} なかだです。 1.7のほうはこの間parserを変えたときに一緒にfixしてしまったんで すが、1.6で、"#{}"の中の行番号が常に文字列の開始位置からになり ます。こんなところでしょうか。 #! /usr/bin/ruby-1.6 " #{p __LINE__} #=> 2 #{p __LINE__} #=> 2 " Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.137.2.120 diff -u -2 -p -r1.137.2.120 eval.c --- eval.c 11 Jun 2002 06:58:36 -0000 1.137.2.120 +++ eval.c 19 Jun 2002 08:35:40 -0000 @@ -2912,5 +2912,5 @@ rb_eval(self, n) result = ruby_errinfo; ruby_errinfo = Qnil; - ruby_sourceline = nd_line(node); + ruby_sourceline = nd_line(list->nd_head); ruby_in_eval++; rb_dvar_push(0, 0); Index: parse.y =================================================================== RCS file: /cvs/ruby/src/ruby/parse.y,v retrieving revision 1.74.2.59 diff -u -2 -p -r1.74.2.59 parse.y --- parse.y 11 Jul 2002 08:24:53 -0000 1.74.2.59 +++ parse.y 11 Jul 2002 10:50:43 -0000 @@ -3937,4 +3937,5 @@ str_extend(list, term, paren) int brace_nest = 0; int paren_nest = 0; + int start; c = nextc(); @@ -3950,4 +3951,5 @@ str_extend(list, term, paren) } + start = ruby_sourceline; ss = rb_str_new(tok(), toklen()); if (list == 0) { @@ -4126,4 +4128,5 @@ str_extend(list, term, paren) tokfix(); node = NEW_EVSTR(tok(),toklen()); + nd_set_line(node, start); list_append(list, node); newtok(); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦