Auto merge of #99556 - davidtwco:collapse-debuginfo, r=wesleywiser
ssa: implement `#[collapse_debuginfo]` cc #39153 rust-lang/compiler-team#386 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. r? rust-lang/wg-debugging
This commit is contained in:
commit
0df1ddc185
21 changed files with 700 additions and 36 deletions
|
@ -944,12 +944,6 @@ pub struct ExpnData {
|
|||
/// internally without forcing the whole crate to opt-in
|
||||
/// to them.
|
||||
pub allow_internal_unstable: Option<Lrc<[Symbol]>>,
|
||||
/// Whether the macro is allowed to use `unsafe` internally
|
||||
/// even if the user crate has `#![forbid(unsafe_code)]`.
|
||||
pub allow_internal_unsafe: bool,
|
||||
/// Enables the macro helper hack (`ident!(...)` -> `$crate::ident!(...)`)
|
||||
/// for a given macro.
|
||||
pub local_inner_macros: bool,
|
||||
/// Edition of the crate in which the macro is defined.
|
||||
pub edition: Edition,
|
||||
/// The `DefId` of the macro being invoked,
|
||||
|
@ -957,6 +951,13 @@ pub struct ExpnData {
|
|||
pub macro_def_id: Option<DefId>,
|
||||
/// The normal module (`mod`) in which the expanded macro was defined.
|
||||
pub parent_module: Option<DefId>,
|
||||
/// Suppresses the `unsafe_code` lint for code produced by this macro.
|
||||
pub allow_internal_unsafe: bool,
|
||||
/// Enables the macro helper hack (`ident!(...)` -> `$crate::ident!(...)`) for this macro.
|
||||
pub local_inner_macros: bool,
|
||||
/// Should debuginfo for the macro be collapsed to the outermost expansion site (in other
|
||||
/// words, was the macro definition annotated with `#[collapse_debuginfo]`)?
|
||||
pub collapse_debuginfo: bool,
|
||||
}
|
||||
|
||||
impl !PartialEq for ExpnData {}
|
||||
|
@ -969,11 +970,12 @@ impl ExpnData {
|
|||
call_site: Span,
|
||||
def_site: Span,
|
||||
allow_internal_unstable: Option<Lrc<[Symbol]>>,
|
||||
allow_internal_unsafe: bool,
|
||||
local_inner_macros: bool,
|
||||
edition: Edition,
|
||||
macro_def_id: Option<DefId>,
|
||||
parent_module: Option<DefId>,
|
||||
allow_internal_unsafe: bool,
|
||||
local_inner_macros: bool,
|
||||
collapse_debuginfo: bool,
|
||||
) -> ExpnData {
|
||||
ExpnData {
|
||||
kind,
|
||||
|
@ -981,12 +983,13 @@ impl ExpnData {
|
|||
call_site,
|
||||
def_site,
|
||||
allow_internal_unstable,
|
||||
allow_internal_unsafe,
|
||||
local_inner_macros,
|
||||
edition,
|
||||
macro_def_id,
|
||||
parent_module,
|
||||
disambiguator: 0,
|
||||
allow_internal_unsafe,
|
||||
local_inner_macros,
|
||||
collapse_debuginfo,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1004,12 +1007,13 @@ impl ExpnData {
|
|||
call_site,
|
||||
def_site: DUMMY_SP,
|
||||
allow_internal_unstable: None,
|
||||
allow_internal_unsafe: false,
|
||||
local_inner_macros: false,
|
||||
edition,
|
||||
macro_def_id,
|
||||
parent_module,
|
||||
disambiguator: 0,
|
||||
allow_internal_unsafe: false,
|
||||
local_inner_macros: false,
|
||||
collapse_debuginfo: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -564,6 +564,13 @@ impl Span {
|
|||
self.ctxt() != SyntaxContext::root()
|
||||
}
|
||||
|
||||
/// Returns `true` if `span` originates in a macro's expansion where debuginfo should be
|
||||
/// collapsed.
|
||||
pub fn in_macro_expansion_with_collapse_debuginfo(self) -> bool {
|
||||
let outer_expn = self.ctxt().outer_expn_data();
|
||||
matches!(outer_expn.kind, ExpnKind::Macro(..)) && outer_expn.collapse_debuginfo
|
||||
}
|
||||
|
||||
/// Returns `true` if `span` originates in a derive-macro's expansion.
|
||||
pub fn in_derive_expansion(self) -> bool {
|
||||
matches!(self.ctxt().outer_expn_data().kind, ExpnKind::Macro(MacroKind::Derive, _))
|
||||
|
|
|
@ -487,6 +487,7 @@ symbols! {
|
|||
cmse_nonsecure_entry,
|
||||
coerce_unsized,
|
||||
cold,
|
||||
collapse_debuginfo,
|
||||
column,
|
||||
column_macro,
|
||||
compare_and_swap,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue