Rollup merge of #118903 - azhogin:azhogin/skip_second_stmt_debuginfo.rs, r=petrochenkov
Improved support of collapse_debuginfo attribute for macros. Added walk_chain_collapsed function to consider collapse_debuginfo attribute in parent macros in call chain. Fixed collapse_debuginfo attribute processing for cranelift (there was if/else branches error swap). cc https://github.com/rust-lang/rust/issues/100758
This commit is contained in:
commit
ee7d4c1561
8 changed files with 513 additions and 39 deletions
|
@ -51,7 +51,7 @@ use rustc_session::lint::LintBuffer;
|
|||
pub use rustc_session::lint::RegisteredTools;
|
||||
use rustc_span::hygiene::MacroKind;
|
||||
use rustc_span::symbol::{kw, sym, Ident, Symbol};
|
||||
use rustc_span::{ExpnId, ExpnKind, Span};
|
||||
use rustc_span::{hygiene, ExpnId, ExpnKind, Span};
|
||||
use rustc_target::abi::{Align, FieldIdx, Integer, IntegerType, VariantIdx};
|
||||
pub use rustc_target::abi::{ReprFlags, ReprOptions};
|
||||
pub use rustc_type_ir::{DebugWithInfcx, InferCtxtLike, WithInfcx};
|
||||
|
@ -2518,21 +2518,21 @@ impl<'tcx> TyCtxt<'tcx> {
|
|||
(ident, scope)
|
||||
}
|
||||
|
||||
/// Returns `true` if the debuginfo for `span` should be collapsed to the outermost expansion
|
||||
/// site. Only applies when `Span` is the result of macro expansion.
|
||||
/// Returns corrected span if the debuginfo for `span` should be collapsed to the outermost
|
||||
/// expansion site (with collapse_debuginfo attribute if the corresponding feature enabled).
|
||||
/// Only applies when `Span` is the result of macro expansion.
|
||||
///
|
||||
/// - If the `collapse_debuginfo` feature is enabled then debuginfo is not collapsed by default
|
||||
/// and only when a macro definition is annotated with `#[collapse_debuginfo]`.
|
||||
/// and only when a (some enclosing) macro definition is annotated with `#[collapse_debuginfo]`.
|
||||
/// - If `collapse_debuginfo` is not enabled, then debuginfo is collapsed by default.
|
||||
///
|
||||
/// When `-Zdebug-macros` is provided then debuginfo will never be collapsed.
|
||||
pub fn should_collapse_debuginfo(self, span: Span) -> bool {
|
||||
!self.sess.opts.unstable_opts.debug_macros
|
||||
&& if self.features().collapse_debuginfo {
|
||||
span.in_macro_expansion_with_collapse_debuginfo()
|
||||
} else {
|
||||
span.from_expansion()
|
||||
}
|
||||
pub fn collapsed_debuginfo(self, span: Span, upto: Span) -> Span {
|
||||
if self.sess.opts.unstable_opts.debug_macros || !span.from_expansion() {
|
||||
return span;
|
||||
}
|
||||
let collapse_debuginfo_enabled = self.features().collapse_debuginfo;
|
||||
hygiene::walk_chain_collapsed(span, upto, collapse_debuginfo_enabled)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue