Skip to content

Commit

Permalink
Move LitKind logic to session_diagnostics module
Browse files Browse the repository at this point in the history
  • Loading branch information
hampuslidin committed Aug 22, 2022
1 parent 944a3e2 commit afd3476
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 18 deletions.
23 changes: 6 additions & 17 deletions compiler/rustc_attr/src/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -854,6 +854,7 @@ where
sess.emit_err(session_diagnostics::DeprecatedItemSuggestion {
span: mi.span,
is_nightly: sess.is_nightly_build().then_some(()),
details: (),
});
}

Expand Down Expand Up @@ -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!(
Expand Down
17 changes: 16 additions & 1 deletion compiler/rustc_attr/src/session_diagnostics.rs
Original file line number Diff line number Diff line change
@@ -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};
Expand Down Expand Up @@ -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 {
Expand All @@ -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)]
Expand Down

0 comments on commit afd3476

Please sign in to comment.