diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-04 07:50:15 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-12-04 07:50:15 +0000 |
commit | 9ad065375f171ea37979d31ef725323b3b7414e9 (patch) | |
tree | 3e597133eb72db00bccacd7ff4f9d4d4856be59b | |
parent | 2c2cf71b048e42950d5d5f79fe78bc9fea0df158 (diff) | |
download | ruby-9ad065375f171ea37979d31ef725323b3b7414e9.tar.gz |
* parse.y (k_def): adjust the location of method definition to the
line of def. [Bug #2427]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 8 | ||||
-rw-r--r-- | test/ruby/test_proc.rb | 7 |
3 files changed, 15 insertions, 5 deletions
@@ -1,3 +1,8 @@ +Fri Dec 4 16:50:13 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (k_def): adjust the location of method definition to the + line of def. [Bug #2427] + Fri Dec 4 15:50:18 2009 Shugo Maeda <shugo@ruby-lang.org> * vm_eval.c (yield_under): does not yield self, and passes blockptr @@ -2902,7 +2902,7 @@ primary : literal NODE *body = remove_begin($5); reduce_nodes(&body); $$ = NEW_DEFN($2, $4, body, NOEX_PRIVATE); - fixpos($$, $4); + nd_set_line($$, $<num>1); /*% $$ = dispatch3(def, $2, $4, $5); %*/ @@ -2924,7 +2924,7 @@ primary : literal NODE *body = remove_begin($8); reduce_nodes(&body); $$ = NEW_DEFS($2, $5, $7, body); - fixpos($$, $2); + nd_set_line($$, $<num>1); /*% $$ = dispatch5(defs, $2, $3, $5, $7, $8); %*/ @@ -3034,6 +3034,10 @@ k_module : keyword_module k_def : keyword_def { token_info_push("def"); + /*%%%*/ + $<num>$ = ruby_sourceline; + /*% + %*/ } ; diff --git a/test/ruby/test_proc.rb b/test/ruby/test_proc.rb index 6c2bae4c41..de95ed5676 100644 --- a/test/ruby/test_proc.rb +++ b/test/ruby/test_proc.rb @@ -746,14 +746,15 @@ class TestProc < Test::Unit::TestCase assert(x.to_s.tainted?) end - def source_location_test - __LINE__ + @@line_of_source_location_test = __LINE__ + 1 + def source_location_test a=1, + b=2 end def test_source_location file, lineno = method(:source_location_test).source_location assert_match(/^#{ Regexp.quote(__FILE__) }$/, file) - assert_equal(source_location_test - 1, lineno) + assert_equal(@@line_of_source_location_test, lineno, 'Bug #2427') end def test_splat_without_respond_to |