From fbf8fe586400e50cf609de34a8e708c106ddcc53 Mon Sep 17 00:00:00 2001 From: Erich Gubler Date: Wed, 26 Apr 2023 15:41:53 -0400 Subject: [PATCH] refactor(cli): generate `Diagnostic::message` from `print_err` inside `emit_annotated_error` --- cli/src/bin/naga.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cli/src/bin/naga.rs b/cli/src/bin/naga.rs index e3b6663e71..e64e3c0673 100644 --- a/cli/src/bin/naga.rs +++ b/cli/src/bin/naga.rs @@ -345,8 +345,9 @@ fn run() -> Result<(), Box> { if let Some(input) = input_text { let filename = input_path.file_name().and_then(std::ffi::OsStr::to_str); emit_annotated_error(&error, filename.unwrap_or("input"), &input); + } else { + print_err(&mut stderr().lock(), &error); } - print_err(&mut stderr().lock(), &error); None } }; @@ -557,7 +558,14 @@ pub fn emit_annotated_error(ann_err: &WithSpan, filename: &str, sou let config = codespan_reporting::term::Config::default(); let writer = StandardStream::stderr(ColorChoice::Auto); - let diagnostic = Diagnostic::error().with_labels( + let mut msg_buf = Vec::new(); + print_err(&mut msg_buf, ann_err); + let msg = String::from_utf8(msg_buf) + .unwrap() + // NOTE: `replace` is intended to correct the alignment of multi-line messages against the + // `error: ` prefix, which is 7 characters. + .replace("\n", "\n "); + let diagnostic = Diagnostic::error().with_message(msg).with_labels( ann_err .spans() .map(|(span, desc)| {