diff options
Diffstat (limited to 'compiler/rustc_ast_passes/src/errors.rs')
-rw-r--r-- | compiler/rustc_ast_passes/src/errors.rs | 127 |
1 files changed, 58 insertions, 69 deletions
diff --git a/compiler/rustc_ast_passes/src/errors.rs b/compiler/rustc_ast_passes/src/errors.rs index 4f3b09c58..59f582f10 100644 --- a/compiler/rustc_ast_passes/src/errors.rs +++ b/compiler/rustc_ast_passes/src/errors.rs @@ -1,13 +1,13 @@ //! Errors emitted by ast_passes. -use rustc_errors::{fluent, AddSubdiagnostic, Applicability, Diagnostic}; -use rustc_macros::{SessionDiagnostic, SessionSubdiagnostic}; +use rustc_errors::{fluent, AddToDiagnostic, Applicability, Diagnostic, SubdiagnosticMessage}; +use rustc_macros::{Diagnostic, Subdiagnostic}; use rustc_span::{Span, Symbol}; use crate::ast_validation::ForbiddenLetReason; -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_let)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_let)] #[note] pub struct ForbiddenLet { #[primary_span] @@ -16,130 +16,116 @@ pub struct ForbiddenLet { pub(crate) reason: ForbiddenLetReason, } -impl AddSubdiagnostic for ForbiddenLetReason { - fn add_to_diagnostic(self, diag: &mut Diagnostic) { - match self { - Self::GenericForbidden => {} - Self::NotSupportedOr(span) => { - diag.span_note(span, fluent::ast_passes::not_supported_or); - } - Self::NotSupportedParentheses(span) => { - diag.span_note(span, fluent::ast_passes::not_supported_parentheses); - } - } - } -} - -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_let_stable)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_let_stable)] #[note] pub struct ForbiddenLetStable { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_assoc_constraint)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_assoc_constraint)] pub struct ForbiddenAssocConstraint { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::keyword_lifetime)] +#[derive(Diagnostic)] +#[diag(ast_passes_keyword_lifetime)] pub struct KeywordLifetime { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::invalid_label)] +#[derive(Diagnostic)] +#[diag(ast_passes_invalid_label)] pub struct InvalidLabel { #[primary_span] pub span: Span, pub name: Symbol, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::invalid_visibility, code = "E0449")] +#[derive(Diagnostic)] +#[diag(ast_passes_invalid_visibility, code = "E0449")] pub struct InvalidVisibility { #[primary_span] pub span: Span, - #[label(ast_passes::implied)] + #[label(implied)] pub implied: Option<Span>, #[subdiagnostic] pub note: Option<InvalidVisibilityNote>, } -#[derive(SessionSubdiagnostic)] +#[derive(Subdiagnostic)] pub enum InvalidVisibilityNote { - #[note(ast_passes::individual_impl_items)] + #[note(individual_impl_items)] IndividualImplItems, - #[note(ast_passes::individual_foreign_items)] + #[note(individual_foreign_items)] IndividualForeignItems, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::trait_fn_const, code = "E0379")] +#[derive(Diagnostic)] +#[diag(ast_passes_trait_fn_const, code = "E0379")] pub struct TraitFnConst { #[primary_span] #[label] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_lifetime_bound)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_lifetime_bound)] pub struct ForbiddenLifetimeBound { #[primary_span] pub spans: Vec<Span>, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_non_lifetime_param)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_non_lifetime_param)] pub struct ForbiddenNonLifetimeParam { #[primary_span] pub spans: Vec<Span>, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_too_many)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_too_many)] pub struct FnParamTooMany { #[primary_span] pub span: Span, pub max_num_args: usize, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_c_var_args_only)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_c_var_args_only)] pub struct FnParamCVarArgsOnly { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_c_var_args_not_last)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_c_var_args_not_last)] pub struct FnParamCVarArgsNotLast { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_doc_comment)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_doc_comment)] pub struct FnParamDocComment { #[primary_span] #[label] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_forbidden_attr)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_forbidden_attr)] pub struct FnParamForbiddenAttr { #[primary_span] pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_param_forbidden_self)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_param_forbidden_self)] #[note] pub struct FnParamForbiddenSelf { #[primary_span] @@ -147,8 +133,8 @@ pub struct FnParamForbiddenSelf { pub span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::forbidden_default)] +#[derive(Diagnostic)] +#[diag(ast_passes_forbidden_default)] pub struct ForbiddenDefault { #[primary_span] pub span: Span, @@ -156,8 +142,8 @@ pub struct ForbiddenDefault { pub def_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::assoc_const_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_assoc_const_without_body)] pub struct AssocConstWithoutBody { #[primary_span] pub span: Span, @@ -165,8 +151,8 @@ pub struct AssocConstWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::assoc_fn_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_assoc_fn_without_body)] pub struct AssocFnWithoutBody { #[primary_span] pub span: Span, @@ -174,8 +160,8 @@ pub struct AssocFnWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::assoc_type_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_assoc_type_without_body)] pub struct AssocTypeWithoutBody { #[primary_span] pub span: Span, @@ -183,8 +169,8 @@ pub struct AssocTypeWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::const_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_const_without_body)] pub struct ConstWithoutBody { #[primary_span] pub span: Span, @@ -192,8 +178,8 @@ pub struct ConstWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::static_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_static_without_body)] pub struct StaticWithoutBody { #[primary_span] pub span: Span, @@ -201,8 +187,8 @@ pub struct StaticWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::ty_alias_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_ty_alias_without_body)] pub struct TyAliasWithoutBody { #[primary_span] pub span: Span, @@ -210,8 +196,8 @@ pub struct TyAliasWithoutBody { pub replace_span: Span, } -#[derive(SessionDiagnostic)] -#[diag(ast_passes::fn_without_body)] +#[derive(Diagnostic)] +#[diag(ast_passes_fn_without_body)] pub struct FnWithoutBody { #[primary_span] pub span: Span, @@ -227,8 +213,11 @@ pub struct ExternBlockSuggestion { pub abi: Option<Symbol>, } -impl AddSubdiagnostic for ExternBlockSuggestion { - fn add_to_diagnostic(self, diag: &mut Diagnostic) { +impl AddToDiagnostic for ExternBlockSuggestion { + fn add_to_diagnostic_with<F>(self, diag: &mut Diagnostic, _: F) + where + F: Fn(&mut Diagnostic, SubdiagnosticMessage) -> SubdiagnosticMessage, + { let start_suggestion = if let Some(abi) = self.abi { format!("extern \"{}\" {{", abi) } else { @@ -237,7 +226,7 @@ impl AddSubdiagnostic for ExternBlockSuggestion { let end_suggestion = " }".to_owned(); diag.multipart_suggestion( - fluent::ast_passes::extern_block_suggestion, + fluent::extern_block_suggestion, vec![(self.start_span, start_suggestion), (self.end_span, end_suggestion)], Applicability::MaybeIncorrect, ); |