diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2023-11-13 11:33:44 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2023-11-13 12:31:44 +1100 |
| commit | 514e324c32db0790a13f52a96e230663f3fe0525 (patch) | |
| tree | 6c3bc50bd8e32489eff6439bbc02c23440887e69 /tests/coverage/macro_name_span.coverage | |
| parent | ed8298b825b8c2c5b57471cdd13dec9f94e26c03 (diff) | |
| download | rust-514e324c32db0790a13f52a96e230663f3fe0525.tar.gz rust-514e324c32db0790a13f52a96e230663f3fe0525.zip | |
coverage: Regression test for #117788
Without the workaround applied, this test will produce malformed mappings that cause `llvm-cov` to fail. (And if it does emit well-formed mappings, they should be obviously incorrect.)
Diffstat (limited to 'tests/coverage/macro_name_span.coverage')
| -rw-r--r-- | tests/coverage/macro_name_span.coverage | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/coverage/macro_name_span.coverage b/tests/coverage/macro_name_span.coverage new file mode 100644 index 00000000000..cadf7024657 --- /dev/null +++ b/tests/coverage/macro_name_span.coverage @@ -0,0 +1,39 @@ +$DIR/auxiliary/macro_name_span_helper.rs: + LL| |// edition: 2021 + LL| | + LL| |#[macro_export] + LL| |macro_rules! macro_that_defines_a_function { + LL| | (fn $name:ident () $body:tt) => { + LL| 1| fn $name () -> () $body + LL| | } + LL| |} + LL| | + LL| |// Non-executable comment. + +$DIR/macro_name_span.rs: + LL| |// edition: 2021 + LL| | + LL| |// Regression test for <https://github.com/rust-lang/rust/issues/117788>. + LL| |// Under some circumstances, the heuristics that detect macro name spans can + LL| |// get confused and produce incorrect spans beyond the bounds of the span + LL| |// being processed. + LL| | + LL| |// aux-build: macro_name_span_helper.rs + LL| |extern crate macro_name_span_helper; + LL| | + LL| 1|fn main() { + LL| 1| affected_function(); + LL| 1|} + LL| | + LL| |macro_rules! macro_with_an_unreasonably_and_egregiously_long_name { + LL| | () => { + LL| | println!("hello"); + LL| | }; + LL| |} + LL| | + LL| |macro_name_span_helper::macro_that_defines_a_function! { + LL| | fn affected_function() { + LL| | macro_with_an_unreasonably_and_egregiously_long_name!(); + LL| | } + LL| |} + |
