Revert "Don't reset line coverage for evaled code. (#8330)"

This reverts commit 7e0f5df2f99693267d61636d23da47f79924e9d5.

https://bugs.ruby-lang.org/issues/19857#note-7
This commit is contained in:
Yusuke Endoh 2023-09-04 19:51:40 +09:00
parent 4cc5659293
commit 4f4c1170bc
2 changed files with 1 additions and 14 deletions

View File

@ -2336,8 +2336,7 @@ iseq_set_sequence(rb_iseq_t *iseq, LINK_ANCHOR *const anchor)
!(rb_get_coverage_mode() & COVERAGE_TARGET_ONESHOT_LINES)) {
int line = iobj->insn_info.line_no - 1;
if (line >= 0 && line < RARRAY_LEN(ISEQ_LINE_COVERAGE(iseq))) {
if (RARRAY_AREF(ISEQ_LINE_COVERAGE(iseq), line) == Qnil)
RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line, INT2FIX(0));
RARRAY_ASET(ISEQ_LINE_COVERAGE(iseq), line, INT2FIX(0));
}
}
if (ISEQ_BRANCH_COVERAGE(iseq) && (events & RUBY_EVENT_COVERAGE_BRANCH)) {

View File

@ -181,18 +181,6 @@ class TestCoverage < Test::Unit::TestCase
end;
end
def test_eval_coverage_repeated
assert_in_out_err(%w[-rcoverage], <<-"end;", ["[3]"], [])
Coverage.start(eval: true, lines: true)
3.times do
eval("Object.new", nil, "test.rb")
end
p Coverage.result["test.rb"][:lines]
end;
end
def test_coverage_supported
assert Coverage.supported?(:lines)
assert Coverage.supported?(:oneshot_lines)