about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHampus Lidin <hampuslidin@gmail.com>2022-08-21 22:11:41 +0200
committerHampus Lidin <hampuslidin@gmail.com>2022-08-22 20:19:20 +0200
commitafd34765f6ef42bd3472040933f07dbb56621565 (patch)
treeafd8e14c8cc92a717c3004772cdc8ec4524b0292
parent944a3e22ef39cd9640995331e3ab6d373d1241c8 (diff)
downloadrust-afd34765f6ef42bd3472040933f07dbb56621565.tar.gz
rust-afd34765f6ef42bd3472040933f07dbb56621565.zip
Move `LitKind` logic to `session_diagnostics` module
-rw-r--r--compiler/rustc_attr/src/builtin.rs23
-rw-r--r--compiler/rustc_attr/src/session_diagnostics.rs17
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)]