cd9021e8cb
When we try to extract coverage-relevant spans from MIR, sometimes we see MIR statements/terminators whose spans cover the entire function body. Those spans tend to be unhelpful for coverage purposes, because they often represent compiler-inserted code, e.g. the implicit return value of `()`.
1.7 KiB
1.7 KiB
LL| |// edition: 2021
LL| |// ignore-windows - we can't force `llvm-cov` to use ANSI escapes on Windows
LL| |// llvm-cov-flags: --use-color
LL| |
LL| |// Check that column numbers are denoted in bytes, so that they don't cause
LL| |// `llvm-cov` to fail or emit malformed output.
LL| |//
LL| |// Note that when `llvm-cov` prints ^ arrows on a subsequent line, it simply
LL| |// inserts one space character for each "column", with no understanding of
LL| |// Unicode or character widths. So those arrows will tend to be misaligned
LL| |// for non-ASCII source code, regardless of whether column numbers are code
LL| |// points or bytes.
LL| |
LL| 1|fn main() {
LL| 33| for _İ in 'А'..='Я' { /* Я */ }
^32 ^32
LL| |
LL| 1| if 申し訳ございません() && 申し訳ございません() {
^0
LL| 0| println!("true");
LL| 1| }
LL| |
LL| 1| サビ();
LL| 1|}
LL| |
LL| 1|fn 申し訳ございません() -> bool {
LL| 1| std::hint::black_box(false)
LL| 1|}
LL| |
LL| |macro_rules! macro_that_defines_a_function {
LL| | (fn $名:ident () $体:tt) => {
LL| 0| fn $名 () $体 fn 他 () {}
LL| | }
LL| |}
LL| |
LL| |macro_that_defines_a_function! {
LL| | fn サビ() {}
LL| |}
LL| |// ignore-windows - we can't force `llvm-cov` to use ANSI escapes on Windows
LL| |// llvm-cov-flags: --use-color
LL| |
LL| |// Check that column numbers are denoted in bytes, so that they don't cause
LL| |// `llvm-cov` to fail or emit malformed output.
LL| |//
LL| |// Note that when `llvm-cov` prints ^ arrows on a subsequent line, it simply
LL| |// inserts one space character for each "column", with no understanding of
LL| |// Unicode or character widths. So those arrows will tend to be misaligned
LL| |// for non-ASCII source code, regardless of whether column numbers are code
LL| |// points or bytes.
LL| |
LL| 1|fn main() {
LL| 33| for _İ in 'А'..='Я' { /* Я */ }
^32 ^32
LL| |
LL| 1| if 申し訳ございません() && 申し訳ございません() {
^0
LL| 0| println!("true");
LL| 1| }
LL| |
LL| 1| サビ();
LL| 1|}
LL| |
LL| 1|fn 申し訳ございません() -> bool {
LL| 1| std::hint::black_box(false)
LL| 1|}
LL| |
LL| |macro_rules! macro_that_defines_a_function {
LL| | (fn $名:ident () $体:tt) => {
LL| 0| fn $名 () $体 fn 他 () {}
LL| | }
LL| |}
LL| |
LL| |macro_that_defines_a_function! {
LL| | fn サビ() {}
LL| |}