Skip to content

Commit 1cf9be9

Browse files
committed
ssa: implement #[collapse_debuginfo]
Debuginfo line information for macro invocations are collapsed by default - line information are replaced by the line of the outermost expansion site. Using `-Zdebug-macros` disables this behaviour. When the `collapse_debuginfo` feature is enabled, the default behaviour is reversed so that debuginfo is not collapsed by default. In addition, the `#[collapse_debuginfo]` attribute is available and can be applied to macro definitions which will then have their line information collapsed. Signed-off-by: David Wood <[email protected]>
1 parent b8169a6 commit 1cf9be9

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/debuginfo/line_info.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ impl DebugContext {
6868
) -> (Lrc<SourceFile>, u64, u64) {
6969
// Based on https://github.com/rust-lang/rust/blob/e369d87b015a84653343032833d65d0545fd3f26/src/librustc_codegen_ssa/mir/mod.rs#L116-L131
7070
// In order to have a good line stepping behavior in debugger, we overwrite debug
71-
// locations of macro expansions with that of the outermost expansion site
72-
// (unless the crate is being compiled with `-Z debug-macros`).
73-
let span = if !span.from_expansion() || tcx.sess.opts.unstable_opts.debug_macros {
71+
// locations of macro expansions with that of the outermost expansion site (when the macro is
72+
// annotated with `#[collapse_debuginfo]` or when `-Zdebug-macros` is provided).
73+
let span = if tcx.should_collapse_debuginfo(span) {
7474
span
7575
} else {
7676
// Walk up the macro expansion chain until we reach a non-expanded span.

0 commit comments

Comments
 (0)