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"); 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)>, }