diff options
| author | bors <bors@rust-lang.org> | 2024-01-09 14:50:14 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-01-09 14:50:14 +0000 |
| commit | 5876c8cdfd3df742c334d6447d44d760c77103b6 (patch) | |
| tree | b2437656721ba0a5f4068566975525a9bab87974 /compiler/rustc_hir_analysis/src/errors.rs | |
| parent | be00c5a9b89161b7f45ba80340f709e8e41122f9 (diff) | |
| parent | f41d7739880e72743a74722ae6fcc1be9f7b4e5c (diff) | |
| download | rust-5876c8cdfd3df742c334d6447d44d760c77103b6.tar.gz rust-5876c8cdfd3df742c334d6447d44d760c77103b6.zip | |
Auto merge of #119767 - GuillaumeGomez:rollup-fbp26yb, r=GuillaumeGomez
Rollup of 9 pull requests Successful merges: - #117556 (Disallow reference to `static mut` and adding `static_mut_ref` lint) - #118748 (std: getrandom simplification for freebsd.) - #119282 (Rework and improve the unstable documentation of check-cfg) - #119527 (don't reexport atomic::ordering via rustc_data_structures, use std import) - #119668 (Simplify implementation of MIR promotion) - #119699 (Merge dead bb pruning and unreachable bb deduplication.) - #119723 (Remove `-Zdont-buffer-diagnostics`.) - #119756 (rustdoc-search: reuse individual types in function signatures) - #119758 (GNU/Hurd: unconditionally use inline stack probes) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_hir_analysis/src/errors.rs')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/errors.rs | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/errors.rs b/compiler/rustc_hir_analysis/src/errors.rs index 9124d502110..4f22da4ba3b 100644 --- a/compiler/rustc_hir_analysis/src/errors.rs +++ b/compiler/rustc_hir_analysis/src/errors.rs @@ -1410,3 +1410,94 @@ pub struct OnlyCurrentTraitsPointerSugg<'a> { pub mut_key: &'a str, pub ptr_ty: Ty<'a>, } + +#[derive(Diagnostic)] +#[diag(hir_analysis_static_mut_ref, code = "E0796")] +#[note] +pub struct StaticMutRef { + #[primary_span] + #[label] + pub span: Span, + #[subdiagnostic] + pub sugg: StaticMutRefSugg, +} + +#[derive(Subdiagnostic)] +pub enum StaticMutRefSugg { + #[suggestion( + hir_analysis_suggestion, + style = "verbose", + code = "addr_of!({var})", + applicability = "maybe-incorrect" + )] + Shared { + #[primary_span] + span: Span, + var: String, + }, + #[suggestion( + hir_analysis_suggestion_mut, + style = "verbose", + code = "addr_of_mut!({var})", + applicability = "maybe-incorrect" + )] + Mut { + #[primary_span] + span: Span, + var: String, + }, +} + +// STATIC_MUT_REF lint +#[derive(LintDiagnostic)] +#[diag(hir_analysis_static_mut_ref_lint)] +#[note] +pub struct RefOfMutStatic<'a> { + pub shared: &'a str, + #[note(hir_analysis_why_note)] + pub why_note: (), + #[subdiagnostic] + pub label: RefOfMutStaticLabel, + #[subdiagnostic] + pub sugg: RefOfMutStaticSugg, +} + +#[derive(Subdiagnostic)] +pub enum RefOfMutStaticLabel { + #[label(hir_analysis_label)] + Shared { + #[primary_span] + span: Span, + }, + #[label(hir_analysis_label_mut)] + Mut { + #[primary_span] + span: Span, + }, +} + +#[derive(Subdiagnostic)] +pub enum RefOfMutStaticSugg { + #[suggestion( + hir_analysis_suggestion, + style = "verbose", + code = "addr_of!({var})", + applicability = "maybe-incorrect" + )] + Shared { + #[primary_span] + span: Span, + var: String, + }, + #[suggestion( + hir_analysis_suggestion_mut, + style = "verbose", + code = "addr_of_mut!({var})", + applicability = "maybe-incorrect" + )] + Mut { + #[primary_span] + span: Span, + var: String, + }, +} |
