From 1456f73bb4a276c49b9caa6087cf4305536d1f74 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 3 Oct 2022 21:01:19 +0200 Subject: [PATCH] Fix rustdoc ICE in invalid_rust_codeblocks lint The diagnostic message extraction code didn't handle translations yet. --- .../passes/check_code_block_syntax.rs | 7 +++++-- src/test/rustdoc-ui/invalid-syntax.rs | 6 ++++++ src/test/rustdoc-ui/invalid-syntax.stderr | 17 ++++++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/passes/check_code_block_syntax.rs b/src/librustdoc/passes/check_code_block_syntax.rs index 23f87838544df..14a38a760d238 100644 --- a/src/librustdoc/passes/check_code_block_syntax.rs +++ b/src/librustdoc/passes/check_code_block_syntax.rs @@ -192,8 +192,11 @@ impl Translate for BufferEmitter { impl Emitter for BufferEmitter { fn emit_diagnostic(&mut self, diag: &Diagnostic) { let mut buffer = self.buffer.borrow_mut(); - // FIXME(davidtwco): need to support translation here eventually - buffer.messages.push(format!("error from rustc: {}", diag.message[0].0.expect_str())); + + let fluent_args = self.to_fluent_args(diag.args()); + let translated_main_message = self.translate_message(&diag.message[0].0, &fluent_args); + + buffer.messages.push(format!("error from rustc: {}", translated_main_message)); if diag.is_error() { buffer.has_errors = true; } diff --git a/src/test/rustdoc-ui/invalid-syntax.rs b/src/test/rustdoc-ui/invalid-syntax.rs index b503d1093fda8..acb2a6f084f23 100644 --- a/src/test/rustdoc-ui/invalid-syntax.rs +++ b/src/test/rustdoc-ui/invalid-syntax.rs @@ -99,3 +99,9 @@ pub fn indent_after_fenced() {} /// ``` pub fn invalid() {} //~^^^^ WARNING could not parse code block as Rust code + +/// ``` +/// fn wook_at_my_beautifuw_bwaces_plz() {); +/// ``` +pub fn uwu() {} +//~^^^^ WARNING could not parse code block as Rust code diff --git a/src/test/rustdoc-ui/invalid-syntax.stderr b/src/test/rustdoc-ui/invalid-syntax.stderr index 6388830cf1bae..597d19e748cb7 100644 --- a/src/test/rustdoc-ui/invalid-syntax.stderr +++ b/src/test/rustdoc-ui/invalid-syntax.stderr @@ -150,5 +150,20 @@ help: mark blocks that do not contain Rust code as text LL | /// ```text | ++++ -warning: 12 warnings emitted +warning: could not parse code block as Rust code + --> $DIR/invalid-syntax.rs:103:5 + | +LL | /// ``` + | _____^ +LL | | /// fn wook_at_my_beautifuw_bwaces_plz() {); +LL | | /// ``` + | |_______^ + | + = note: error from rustc: mismatched closing delimiter: `)` +help: mark blocks that do not contain Rust code as text + | +LL | /// ```text + | ++++ + +warning: 13 warnings emitted