coverage: Regression test for markers in a function with no spans
This commit is contained in:
parent
c57f28bbf7
commit
e0de143970
3 changed files with 67 additions and 0 deletions
8
tests/coverage/no_spans_if_not.cov-map
Normal file
8
tests/coverage/no_spans_if_not.cov-map
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Function name: no_spans_if_not::main
|
||||
Raw bytes (9): 0x[01, 01, 00, 01, 01, 0b, 01, 02, 02]
|
||||
Number of files: 1
|
||||
- file 0 => global file 1
|
||||
Number of expressions: 0
|
||||
Number of file 0 mappings: 1
|
||||
- Code(Counter(0)) at (prev + 11, 1) to (start + 2, 2)
|
||||
|
||||
30
tests/coverage/no_spans_if_not.coverage
Normal file
30
tests/coverage/no_spans_if_not.coverage
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
LL| |// edition: 2021
|
||||
LL| |
|
||||
LL| |// If the span extractor can't find any relevant spans for a function,
|
||||
LL| |// but the function contains coverage span-marker statements (e.g. inserted
|
||||
LL| |// for `if !`), coverage codegen may think that it is instrumented and
|
||||
LL| |// consequently complain that it has no spans.
|
||||
LL| |//
|
||||
LL| |// Regression test for <https://github.com/rust-lang/rust/issues/118850>,
|
||||
LL| |// "A used function should have had coverage mapping data but did not".
|
||||
LL| |
|
||||
LL| 1|fn main() {
|
||||
LL| 1| affected_function();
|
||||
LL| 1|}
|
||||
LL| |
|
||||
LL| |macro_rules! macro_that_defines_a_function {
|
||||
LL| | (fn $name:ident () $body:tt) => {
|
||||
LL| | fn $name () $body
|
||||
LL| | }
|
||||
LL| |}
|
||||
LL| |
|
||||
LL| |macro_that_defines_a_function! {
|
||||
LL| | fn affected_function() {
|
||||
LL| | if !false {
|
||||
LL| | ()
|
||||
LL| | } else {
|
||||
LL| | ()
|
||||
LL| | }
|
||||
LL| | }
|
||||
LL| |}
|
||||
|
||||
29
tests/coverage/no_spans_if_not.rs
Normal file
29
tests/coverage/no_spans_if_not.rs
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
// edition: 2021
|
||||
|
||||
// If the span extractor can't find any relevant spans for a function,
|
||||
// but the function contains coverage span-marker statements (e.g. inserted
|
||||
// for `if !`), coverage codegen may think that it is instrumented and
|
||||
// consequently complain that it has no spans.
|
||||
//
|
||||
// Regression test for <https://github.com/rust-lang/rust/issues/118850>,
|
||||
// "A used function should have had coverage mapping data but did not".
|
||||
|
||||
fn main() {
|
||||
affected_function();
|
||||
}
|
||||
|
||||
macro_rules! macro_that_defines_a_function {
|
||||
(fn $name:ident () $body:tt) => {
|
||||
fn $name () $body
|
||||
}
|
||||
}
|
||||
|
||||
macro_that_defines_a_function! {
|
||||
fn affected_function() {
|
||||
if !false {
|
||||
()
|
||||
} else {
|
||||
()
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue