From 3155da024c265f553cbb0621b67bf29747391035 Mon Sep 17 00:00:00 2001 From: mame Date: Thu, 14 Sep 2017 04:42:23 +0000 Subject: [PATCH] Fix the lineno of case statement that has no expression git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 5 +++++ test/coverage/test_coverage.rb | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/parse.y b/parse.y index 985e9beb7e..004e2420b5 100644 --- a/parse.y +++ b/parse.y @@ -2687,6 +2687,7 @@ primary : literal { /*%%%*/ $$ = NEW_CASE(0, $3); + nd_set_line($3, $1); /*% $$ = dispatch2(case, Qnil, $3); %*/ @@ -2937,6 +2938,10 @@ k_until : keyword_until k_case : keyword_case { token_info_push("case"); + /*%%%*/ + $$ = ruby_sourceline; + /*% + %*/ } ; diff --git a/test/coverage/test_coverage.rb b/test/coverage/test_coverage.rb index 87b7126aa9..af22d98e6c 100644 --- a/test/coverage/test_coverage.rb +++ b/test/coverage/test_coverage.rb @@ -270,7 +270,7 @@ class TestCoverage < Test::Unit::TestCase f.puts 'foo(2)' end - assert_in_out_err(%w[-W0 -rcoverage], <<-"end;", ["{:branches=>{[:case, 0, 2]=>{[:when, 1, 4]=>2, [:when, 2, 6]=>0, [:else, 3, 2]=>1}, [:case, 4, 14]=>{[:when, 5, 11]=>2, [:when, 6, 13]=>0, [:else, 7, 14]=>1}, [:case, 8, 16]=>{[:when, 9, 18]=>2, [:when, 10, 20]=>0, [:else, 11, 22]=>1}, [:case, 12, 32]=>{[:when, 13, 27]=>2, [:when, 14, 29]=>0, [:else, 15, 31]=>1}}}"], []) + assert_in_out_err(%w[-W0 -rcoverage], <<-"end;", ["{:branches=>{[:case, 0, 2]=>{[:when, 1, 4]=>2, [:when, 2, 6]=>0, [:else, 3, 2]=>1}, [:case, 4, 9]=>{[:when, 5, 11]=>2, [:when, 6, 13]=>0, [:else, 7, 9]=>1}, [:case, 8, 16]=>{[:when, 9, 18]=>2, [:when, 10, 20]=>0, [:else, 11, 22]=>1}, [:case, 12, 25]=>{[:when, 13, 27]=>2, [:when, 14, 29]=>0, [:else, 15, 31]=>1}}}"], []) ENV["COVERAGE_EXPERIMENTAL_MODE"] = "true" Coverage.start(branches: true) tmp = Dir.pwd