rust/src
Rich Kadel cb70221857 Coverage instruments closure bodies in macros (not the macro body)
Fixes: #84884

This solution might be considered a compromise, but I think it is the
better choice.

The results in the `closure.rs` test correctly resolve all test cases
broken as described in #84884.

One test pattern (in both `closure_macro.rs` and
`closure_macro_async.rs`) was also affected, and removes coverage
statistics for the lines inside the closure, because the closure
includes a macro. (The coverage remains at the callsite of the macro, so
we lose some detail, but there isn't a perfect choice with macros.

Often macro implementations are split across the macro and the callsite,
and there doesn't appear to be a single "right choice" for which body
should be covered. For the current implementation, we can't do both.

The callsite is most likely to be the preferred site for coverage.

I applied this fix to all `MacroKinds`, not just `Bang`.

I'm trying to resolve an issue of lost coverage in a
`MacroKind::Attr`-based, function-scoped macro. Instead of only
searching for a body_span that is "not a function-like macro" (that is,
MacroKind::Bang), I'm expanding this to all `MacroKind`s. Maybe I should
expand this to `ExpnKind::Desugaring` and `ExpnKind::AstPass` (or
subsets, depending on their sub-kinds) as well, but I'm not sure that's
a good idea.

I'd like to add a test of the `Attr` macro on functions, but I need time
to figure out how to constract a good, simple example without external
crate dependencies. For the moment, all tests still work as expected (no
change), this new commit shouldn't have a negative affect, and more
importantly, I believe it will have a positive effect. I will try to
confirm this.
2021-05-06 11:15:39 -07:00
..
bootstrap Auto merge of #84189 - jyn514:clippy-dev, r=Mark-Simulacrum 2021-04-29 12:03:43 +00:00
build_helper
ci Rollup merge of #84540 - 12101111:enable-sanitizers, r=Mark-Simulacrum 2021-04-28 22:59:25 -04:00
doc Auto merge of #84658 - Amanieu:reserved_regs, r=petrochenkov 2021-05-01 13:01:24 +00:00
etc Fix HashMap/HashSet LLDB pretty-printer after hashbrown 0.11.0 2021-04-06 12:44:17 +03:00
librustdoc Rollup merge of #84740 - r00ster91:patch-6, r=GuillaumeGomez 2021-05-01 18:32:35 +09:00
llvm-project@b61c24f352 Update LLVM for more wasm simd updates 2021-04-30 07:27:34 -07:00
rustdoc-json-types rustdoc-json: Rename Import.span to Import.source 2021-03-21 19:47:12 -07:00
test Coverage instruments closure bodies in macros (not the macro body) 2021-05-06 11:15:39 -07:00
tools Update cargo 2021-04-30 15:57:47 -07:00
README.md update message 2021-02-14 10:08:37 +05:30
stage0.txt Bump bootstrap compiler 2021-04-06 18:24:09 -07:00
version bump version to 1.54.0 2021-04-30 15:24:00 +02:00

This directory contains the source code of the rust project, including:

  • The test suite
  • The bootstrapping build system
  • Various submodules for tools, like rustdoc, rls, etc.

For more information on how various parts of the compiler work, see the rustc dev guide.