]> git.lizzy.rs Git - rust.git/blobdiff - compiler/rustc_borrowck/src/session_diagnostics.rs
Rollup merge of #101765 - GuillaumeGomez:tyctxt-visibility-doc, r=jyn514
[rust.git] / compiler / rustc_borrowck / src / session_diagnostics.rs
index 8c9676e4bfa850e292f80acfaff7fb3c02d3b28a..5d750c6ca8c7beac7cd32767ab2bbb35d76ce3b4 100644 (file)
@@ -1,7 +1,10 @@
-use rustc_macros::{SessionDiagnostic, SessionSubdiagnostic};
+use rustc_errors::{IntoDiagnosticArg, MultiSpan};
+use rustc_macros::{LintDiagnostic, SessionDiagnostic, SessionSubdiagnostic};
 use rustc_middle::ty::Ty;
 use rustc_span::Span;
 
+use crate::diagnostics::RegionName;
+
 #[derive(SessionDiagnostic)]
 #[diag(borrowck::move_unsized, code = "E0161")]
 pub(crate) struct MoveUnsized<'tcx> {
@@ -42,3 +45,115 @@ pub(crate) struct GenericDoesNotLiveLongEnough {
     #[primary_span]
     pub span: Span,
 }
+
+#[derive(LintDiagnostic)]
+#[diag(borrowck::var_does_not_need_mut)]
+pub(crate) struct VarNeedNotMut {
+    #[suggestion_short(applicability = "machine-applicable", code = "")]
+    pub span: Span,
+}
+
+#[derive(SessionDiagnostic)]
+#[diag(borrowck::const_not_used_in_type_alias)]
+pub(crate) struct ConstNotUsedTraitAlias {
+    pub ct: String,
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(SessionDiagnostic)]
+#[diag(borrowck::var_cannot_escape_closure)]
+#[note]
+#[note(borrowck::cannot_escape)]
+pub(crate) struct FnMutError {
+    #[primary_span]
+    pub span: Span,
+    #[subdiagnostic]
+    pub ty_err: FnMutReturnTypeErr,
+}
+
+#[derive(SessionSubdiagnostic)]
+pub(crate) enum VarHereDenote {
+    #[label(borrowck::var_here_captured)]
+    Captured {
+        #[primary_span]
+        span: Span,
+    },
+    #[label(borrowck::var_here_defined)]
+    Defined {
+        #[primary_span]
+        span: Span,
+    },
+    #[label(borrowck::closure_inferred_mut)]
+    FnMutInferred {
+        #[primary_span]
+        span: Span,
+    },
+}
+
+#[derive(SessionSubdiagnostic)]
+pub(crate) enum FnMutReturnTypeErr {
+    #[label(borrowck::returned_closure_escaped)]
+    ReturnClosure {
+        #[primary_span]
+        span: Span,
+    },
+    #[label(borrowck::returned_async_block_escaped)]
+    ReturnAsyncBlock {
+        #[primary_span]
+        span: Span,
+    },
+    #[label(borrowck::returned_ref_escaped)]
+    ReturnRef {
+        #[primary_span]
+        span: Span,
+    },
+}
+
+#[derive(SessionDiagnostic)]
+#[diag(borrowck::lifetime_constraints_error)]
+pub(crate) struct LifetimeOutliveErr {
+    #[primary_span]
+    pub span: Span,
+}
+
+#[derive(SessionSubdiagnostic)]
+pub(crate) enum LifetimeReturnCategoryErr<'a> {
+    #[label(borrowck::returned_lifetime_wrong)]
+    WrongReturn {
+        #[primary_span]
+        span: Span,
+        mir_def_name: &'a str,
+        outlived_fr_name: RegionName,
+        fr_name: &'a RegionName,
+    },
+    #[label(borrowck::returned_lifetime_short)]
+    ShortReturn {
+        #[primary_span]
+        span: Span,
+        category_desc: &'static str,
+        free_region_name: &'a RegionName,
+        outlived_fr_name: RegionName,
+    },
+}
+
+impl IntoDiagnosticArg for &RegionName {
+    fn into_diagnostic_arg(self) -> rustc_errors::DiagnosticArgValue<'static> {
+        format!("{}", self).into_diagnostic_arg()
+    }
+}
+
+impl IntoDiagnosticArg for RegionName {
+    fn into_diagnostic_arg(self) -> rustc_errors::DiagnosticArgValue<'static> {
+        format!("{}", self).into_diagnostic_arg()
+    }
+}
+
+#[derive(SessionSubdiagnostic)]
+pub(crate) enum RequireStaticErr {
+    #[note(borrowck::used_impl_require_static)]
+    UsedImpl {
+        #[primary_span]
+        multi_span: MultiSpan,
+    },
+}