From afd34765f6ef42bd3472040933f07dbb56621565 Mon Sep 17 00:00:00 2001 From: Hampus Lidin Date: Sun, 21 Aug 2022 22:11:41 +0200 Subject: [PATCH] Move `LitKind` logic to `session_diagnostics` module --- compiler/rustc_attr/src/builtin.rs | 23 +++++-------------- .../rustc_attr/src/session_diagnostics.rs | 17 +++++++++++++- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/compiler/rustc_attr/src/builtin.rs b/compiler/rustc_attr/src/builtin.rs index 17ea47082d4..65edab78ce7 100644 --- a/compiler/rustc_attr/src/builtin.rs +++ b/compiler/rustc_attr/src/builtin.rs @@ -854,6 +854,7 @@ fn find_deprecation_generic<'a, I>(sess: &Session, attrs_iter: I) -> Option<(Dep sess.emit_err(session_diagnostics::DeprecatedItemSuggestion { span: mi.span, is_nightly: sess.is_nightly_build().then_some(()), + details: (), }); } @@ -1021,23 +1022,11 @@ pub fn parse_repr_attr(sess: &Session, attr: &Attribute) -> Vec { sess.emit_err(session_diagnostics::IncorrectReprFormatGeneric { span: item.span(), repr_arg: &name, - cause: match value.kind { - ast::LitKind::Int(int, ast::LitIntType::Unsuffixed) => { - Some(IncorrectReprFormatGenericCause::Int { - span: item.span(), - name: &name, - int, - }) - } - ast::LitKind::Str(symbol, _) => { - Some(IncorrectReprFormatGenericCause::Symbol { - span: item.span(), - name: &name, - symbol, - }) - } - _ => None, - }, + cause: IncorrectReprFormatGenericCause::from_lit_kind( + item.span(), + &value.kind, + &name, + ), }); } else { if matches!( diff --git a/compiler/rustc_attr/src/session_diagnostics.rs b/compiler/rustc_attr/src/session_diagnostics.rs index 34e98156091..a75e7409fba 100644 --- a/compiler/rustc_attr/src/session_diagnostics.rs +++ b/compiler/rustc_attr/src/session_diagnostics.rs @@ -1,5 +1,6 @@ use std::num::IntErrorKind; +use rustc_ast as ast; use rustc_errors::{error_code, fluent, Applicability, DiagnosticBuilder, ErrorGuaranteed}; use rustc_macros::SessionDiagnostic; use rustc_session::{parse::ParseSess, SessionDiagnostic}; @@ -303,6 +304,18 @@ pub(crate) enum IncorrectReprFormatGenericCause<'a> { }, } +impl<'a> IncorrectReprFormatGenericCause<'a> { + pub fn from_lit_kind(span: Span, kind: &ast::LitKind, name: &'a str) -> Option { + match kind { + ast::LitKind::Int(int, ast::LitIntType::Unsuffixed) => { + Some(Self::Int { span, name, int: *int }) + } + ast::LitKind::Str(symbol, _) => Some(Self::Symbol { span, name, symbol: *symbol }), + _ => None, + } + } +} + #[derive(SessionDiagnostic)] #[diag(attr::rustc_promotable_pairing, code = "E0717")] pub(crate) struct RustcPromotablePairing { @@ -326,13 +339,15 @@ pub(crate) struct CfgPredicateIdentifier { #[derive(SessionDiagnostic)] #[diag(attr::deprecated_item_suggestion)] -#[note] pub(crate) struct DeprecatedItemSuggestion { #[primary_span] pub span: Span, #[help] pub is_nightly: Option<()>, + + #[note] + pub details: (), } #[derive(SessionDiagnostic)]