From 504acf876035fa2b944c64d01f6fe66b30acf1e4 Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Mon, 24 Jul 2023 14:40:44 +0200 Subject: Make `--error-format human-annotate-rs` handle multiple files --- .../src/annotate_snippet_emitter_writer.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'compiler/rustc_errors/src') diff --git a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs index 9872b3bda1e..a88fba6dae6 100644 --- a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs +++ b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs @@ -157,10 +157,8 @@ impl AnnotateSnippetEmitterWriter { { annotated_files.swap(0, pos); } - // owned: line source, line index, annotations - type Owned = (String, usize, Vec); - let filename = source_map.filename_for_diagnostics(&primary_lo.file.name); - let origin = filename.to_string_lossy(); + // owned: file name, line source, line index, annotations + type Owned = (String, String, usize, Vec); let annotated_files: Vec = annotated_files .into_iter() .flat_map(|annotated_file| { @@ -169,7 +167,15 @@ impl AnnotateSnippetEmitterWriter { .lines .into_iter() .map(|line| { - (source_string(file.clone(), &line), line.line_index, line.annotations) + // Ensure the source file is present before we try + // to load a string from it. + source_map.ensure_source_file_source_present(file.clone()); + ( + format!("{}", source_map.filename_for_diagnostics(&file.name)), + source_string(file.clone(), &line), + line.line_index, + line.annotations, + ) }) .collect::>() }) @@ -192,11 +198,11 @@ impl AnnotateSnippetEmitterWriter { }, slices: annotated_files .iter() - .map(|(source, line_index, annotations)| { + .map(|(file_name, source, line_index, annotations)| { Slice { source, line_start: *line_index, - origin: Some(&origin), + origin: Some(&file_name), // FIXME(#59346): Not really sure when `fold` should be true or false fold: false, annotations: annotations -- cgit 1.4.1-3-g733a5