diff options
| author | Hampus Lidin <hampuslidin@gmail.com> | 2022-08-21 22:11:41 +0200 |
|---|---|---|
| committer | Hampus Lidin <hampuslidin@gmail.com> | 2022-08-22 20:19:20 +0200 |
| commit | afd34765f6ef42bd3472040933f07dbb56621565 (patch) | |
| tree | afd8e14c8cc92a717c3004772cdc8ec4524b0292 | |
| parent | 944a3e22ef39cd9640995331e3ab6d373d1241c8 (diff) | |
| download | rust-afd34765f6ef42bd3472040933f07dbb56621565.tar.gz rust-afd34765f6ef42bd3472040933f07dbb56621565.zip | |
Move `LitKind` logic to `session_diagnostics` module
| -rw-r--r-- | compiler/rustc_attr/src/builtin.rs | 23 | ||||
| -rw-r--r-- | compiler/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 @@ where 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<ReprAttr> { 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<Self> { + 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)] |
