From 6e9475f1bf3baf4a2afc5bbe7937888796aba021 Mon Sep 17 00:00:00 2001 From: mejrs <59372212+mejrs@users.noreply.github.com> Date: Thu, 6 Aug 2026 15:18:17 +0200 Subject: [PATCH 1/2] Derive attribute parser debug impls --- compiler/rustc_attr_parsing/src/parser.rs | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/compiler/rustc_attr_parsing/src/parser.rs b/compiler/rustc_attr_parsing/src/parser.rs index 76587ba9f0ead..5f1fc8ba90d5e 100644 --- a/compiler/rustc_attr_parsing/src/parser.rs +++ b/compiler/rustc_attr_parsing/src/parser.rs @@ -315,6 +315,7 @@ impl MetaItemOrLitParser { /// `= value` part /// /// The syntax of `MetaItems` can be found at +#[derive(Debug)] pub struct MetaItemParser { path: OwnedPathParser, args: ArgParser, @@ -325,15 +326,6 @@ pub struct MetaItemParser { args_checked: AtomicBool, } -impl Debug for MetaItemParser { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("MetaItemParser") - .field("path", &self.path) - .field("args", &self.args) - .finish() - } -} - impl MetaItemParser { /// For a single-segment meta item, returns its name; otherwise, returns `None`. pub fn ident(&self) -> Option { @@ -385,23 +377,13 @@ impl MetaItemParser { } } -#[derive(Clone)] +#[derive(Clone, Debug)] pub struct NameValueParser { pub eq_span: Span, value: MetaItemLit, pub value_span: Span, } -impl Debug for NameValueParser { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("NameValueParser") - .field("eq_span", &self.eq_span) - .field("value", &self.value) - .field("value_span", &self.value_span) - .finish() - } -} - impl NameValueParser { pub fn value_as_lit(&self) -> &MetaItemLit { &self.value From b5c330c30eab0c85cf47892b6cf3d43c921bcdbf Mon Sep 17 00:00:00 2001 From: mejrs <59372212+mejrs@users.noreply.github.com> Date: Thu, 6 Aug 2026 23:38:00 +0200 Subject: [PATCH 2/2] snippet emitter: rework debug impls --- .../src/annotate_snippet_emitter_writer.rs | 35 +++++++++++------- compiler/rustc_span/src/source_map.rs | 36 ++++++++++++++++++- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs index c3c9f26c31571..7e7f72943c7cd 100644 --- a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs +++ b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs @@ -42,7 +42,6 @@ pub struct AnnotateSnippetEmitter { ui_testing: bool, ignored_directories_in_source_blocks: Vec, diagnostic_width: Option, - macro_backtrace: bool, track_diagnostics: bool, terminal_url: TerminalUrl, @@ -51,18 +50,30 @@ pub struct AnnotateSnippetEmitter { impl Debug for AnnotateSnippetEmitter { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let AnnotateSnippetEmitter { + dst, + sm, + short_message, + ui_testing, + ignored_directories_in_source_blocks, + diagnostic_width, + macro_backtrace, + track_diagnostics, + terminal_url, + theme, + } = self; + f.debug_struct("AnnotateSnippetEmitter") - .field("short_message", &self.short_message) - .field("ui_testing", &self.ui_testing) - .field( - "ignored_directories_in_source_blocks", - &self.ignored_directories_in_source_blocks, - ) - .field("diagnostic_width", &self.diagnostic_width) - .field("macro_backtrace", &self.macro_backtrace) - .field("track_diagnostics", &self.track_diagnostics) - .field("terminal_url", &self.terminal_url) - .field("theme", &self.theme) + .field("dst", &format_args!("")) + .field("sm", sm) + .field("short_message", short_message) + .field("ui_testing", ui_testing) + .field("ignored_directories_in_source_blocks", ignored_directories_in_source_blocks) + .field("diagnostic_width", diagnostic_width) + .field("macro_backtrace", macro_backtrace) + .field("track_diagnostics", track_diagnostics) + .field("terminal_url", terminal_url) + .field("theme", theme) .finish() } } diff --git a/compiler/rustc_span/src/source_map.rs b/compiler/rustc_span/src/source_map.rs index 47c933e245d49..80d1bae71ae89 100644 --- a/compiler/rustc_span/src/source_map.rs +++ b/compiler/rustc_span/src/source_map.rs @@ -174,6 +174,18 @@ struct SourceMapFiles { stable_id_to_source_file: UnhashMap>, } +impl std::fmt::Debug for SourceMapFiles { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let SourceMapFiles { source_files, stable_id_to_source_file: _ } = self; + + f.debug_list() + .entries( + source_files.iter().map(|f| f.name.prefer_remapped_unconditionally().to_string()), + ) + .finish() + } +} + /// Used to construct a `SourceMap` with `SourceMap::with_inputs`. pub struct SourceMapInputs { pub file_loader: Box, @@ -203,6 +215,28 @@ pub struct SourceMap { checksum_hash_kind: Option, } +impl std::fmt::Debug for SourceMap { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + let SourceMap { + files, + file_loader, + path_mapping, + working_dir, + hash_kind, + checksum_hash_kind, + } = self; + + f.debug_struct("SourceMap") + .field("files", files) + .field("file_loader", &format_args!("")) + .field("path_mapping", path_mapping) + .field("working_dir", working_dir) + .field("hash_kind", hash_kind) + .field("checksum_hash_kind", checksum_hash_kind) + .finish() + } +} + impl SourceMap { pub fn new(path_mapping: FilePathMapping) -> SourceMap { Self::with_inputs(SourceMapInputs { @@ -1117,7 +1151,7 @@ pub fn get_source_map() -> Option> { with_session_globals(|session_globals| session_globals.source_map.clone()) } -#[derive(Clone)] +#[derive(Clone, Debug)] pub struct FilePathMapping { mapping: Vec<(PathBuf, PathBuf)>, filename_remapping_scopes: RemapPathScopeComponents,