From 437468daf7d3931ad69e619a1bc5d32134c4ce01 Mon Sep 17 00:00:00 2001 From: David Wood Date: Thu, 21 Apr 2022 04:03:13 +0100 Subject: [PATCH 1/2] typeck: remove unnecessary fluent attr Specifying "suggestion" as the attribute for the only suggestion is unnecessary, it's the default of the derive. Signed-off-by: David Wood --- compiler/rustc_typeck/src/errors.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/rustc_typeck/src/errors.rs b/compiler/rustc_typeck/src/errors.rs index 1088be5f56657..fc08171d2f4c2 100644 --- a/compiler/rustc_typeck/src/errors.rs +++ b/compiler/rustc_typeck/src/errors.rs @@ -134,7 +134,7 @@ pub struct TypeofReservedKeywordUsed<'tcx> { #[primary_span] #[label] pub span: Span, - #[suggestion_verbose(message = "suggestion", code = "{ty}")] + #[suggestion_verbose(code = "{ty}")] pub opt_sugg: Option<(Span, Applicability)>, } From f79d5e9458cd889027e804b2d20e99f8c9d110a0 Mon Sep 17 00:00:00 2001 From: David Wood Date: Thu, 21 Apr 2022 04:22:18 +0100 Subject: [PATCH 2/2] macros: update doc comment for diagnostic derive The documentation comment for this derive is out-of-date, it should have been updated in #95512. Signed-off-by: David Wood --- .../rustc_macros/src/session_diagnostic.rs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/compiler/rustc_macros/src/session_diagnostic.rs b/compiler/rustc_macros/src/session_diagnostic.rs index 46f698f6f9b81..ff7506979fc34 100644 --- a/compiler/rustc_macros/src/session_diagnostic.rs +++ b/compiler/rustc_macros/src/session_diagnostic.rs @@ -16,20 +16,27 @@ use std::collections::{BTreeSet, HashMap}; /// # extern crate rust_middle; /// # use rustc_middle::ty::Ty; /// #[derive(SessionDiagnostic)] -/// #[error(code = "E0505", slug = "move-out-of-borrow-error")] +/// #[error(code = "E0505", slug = "borrowck-move-out-of-borrow")] /// pub struct MoveOutOfBorrowError<'tcx> { /// pub name: Ident, /// pub ty: Ty<'tcx>, /// #[primary_span] -/// #[label = "cannot move out of borrow"] +/// #[label] /// pub span: Span, -/// #[label = "`{ty}` first borrowed here"] -/// pub other_span: Span, -/// #[suggestion(message = "consider cloning here", code = "{name}.clone()")] -/// pub opt_sugg: Option<(Span, Applicability)> +/// #[label = "first-borrow-label"] +/// pub first_borrow_span: Span, +/// #[suggestion(code = "{name}.clone()")] +/// pub clone_sugg: Option<(Span, Applicability)> /// } /// ``` /// +/// ```fluent +/// move-out-of-borrow = cannot move out of {$name} because it is borrowed +/// .label = cannot move out of borrow +/// .first-borrow-label = `{$ty}` first borrowed here +/// .suggestion = consider cloning here +/// ``` +/// /// Then, later, to emit the error: /// /// ```ignore (pseudo-rust) @@ -37,10 +44,13 @@ use std::collections::{BTreeSet, HashMap}; /// expected, /// actual, /// span, -/// other_span, -/// opt_sugg: Some(suggestion, Applicability::MachineApplicable), +/// first_borrow_span, +/// clone_sugg: Some(suggestion, Applicability::MachineApplicable), /// }); /// ``` +/// +/// See rustc dev guide for more examples on using the `#[derive(SessionDiagnostic)]`: +/// pub fn session_diagnostic_derive(s: synstructure::Structure<'_>) -> proc_macro2::TokenStream { // Names for the diagnostic we build and the session we build it from. let diag = format_ident!("diag");