about summary refs log tree commit diff
path: root/compiler/rustc_hir_analysis/src/errors.rs
diff options
context:
space:
mode:
authorFrank King <frankking1729@gmail.com>2024-01-29 15:08:11 +0800
committerFrank King <frankking1729@gmail.com>2024-02-12 12:47:32 +0800
commit0dbd6e9572c7c2bac7922116d6cd9357177ccbc9 (patch)
treea84d58196f2b7234c6deb6e8c675f9aba300507a /compiler/rustc_hir_analysis/src/errors.rs
parent2b04ca94bb06c6913b8b14ba267b3d64b23e3c4d (diff)
downloadrust-0dbd6e9572c7c2bac7922116d6cd9357177ccbc9.tar.gz
rust-0dbd6e9572c7c2bac7922116d6cd9357177ccbc9.zip
Improve some codes according to the reviews
- improve diagnostics of field uniqueness check and representation check
- simplify the implementation of field uniqueness check
- remove some useless codes and improvement neatness
Diffstat (limited to 'compiler/rustc_hir_analysis/src/errors.rs')
-rw-r--r--compiler/rustc_hir_analysis/src/errors.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs
index f7fa3263eaa..6e163cff7ed 100644
--- a/compiler/rustc_hir_analysis/src/errors.rs
+++ b/compiler/rustc_hir_analysis/src/errors.rs
@@ -193,6 +193,8 @@ pub enum FieldAlreadyDeclared {
         span: Span,
         #[note(hir_analysis_nested_field_decl_note)]
         nested_field_span: Span,
+        #[subdiagnostic]
+        help: FieldAlreadyDeclaredNestedHelp,
         #[label(hir_analysis_previous_decl_label)]
         prev_span: Span,
     },
@@ -206,6 +208,8 @@ pub enum FieldAlreadyDeclared {
         prev_span: Span,
         #[note(hir_analysis_previous_nested_field_decl_note)]
         prev_nested_field_span: Span,
+        #[subdiagnostic]
+        prev_help: FieldAlreadyDeclaredNestedHelp,
     },
     #[diag(hir_analysis_field_already_declared_both_nested)]
     BothNested {
@@ -215,13 +219,24 @@ pub enum FieldAlreadyDeclared {
         span: Span,
         #[note(hir_analysis_nested_field_decl_note)]
         nested_field_span: Span,
+        #[subdiagnostic]
+        help: FieldAlreadyDeclaredNestedHelp,
         #[label(hir_analysis_previous_decl_label)]
         prev_span: Span,
         #[note(hir_analysis_previous_nested_field_decl_note)]
         prev_nested_field_span: Span,
+        #[subdiagnostic]
+        prev_help: FieldAlreadyDeclaredNestedHelp,
     },
 }
 
+#[derive(Subdiagnostic)]
+#[help(hir_analysis_field_already_declared_nested_help)]
+pub struct FieldAlreadyDeclaredNestedHelp {
+    #[primary_span]
+    pub span: Span,
+}
+
 #[derive(Diagnostic)]
 #[diag(hir_analysis_copy_impl_on_type_with_dtor, code = E0184)]
 pub struct CopyImplOnTypeWithDtor {
@@ -1583,6 +1598,8 @@ pub enum UnnamedFieldsRepr<'a> {
         adt_name: Symbol,
         #[subdiagnostic]
         unnamed_fields: Vec<UnnamedFieldsReprFieldDefined>,
+        #[suggestion(code = "#[repr(C)]\n")]
+        sugg_span: Span,
     },
     #[diag(hir_analysis_unnamed_fields_repr_field_missing_repr_c)]
     FieldMissingReprC {
@@ -1592,6 +1609,9 @@ pub enum UnnamedFieldsRepr<'a> {
         #[label(hir_analysis_field_ty_label)]
         field_ty_span: Span,
         field_ty: Ty<'a>,
+        field_adt_kind: &'static str,
+        #[suggestion(code = "#[repr(C)]\n")]
+        sugg_span: Span,
     },
 }