rustc_hir_analysis/errors/
precise_captures.rs

1use rustc_errors::E0799;
2use rustc_macros::Diagnostic;
3use rustc_span::{Span, Symbol};
4
5#[derive(Diagnostic)]
6#[diag(hir_analysis_param_not_captured)]
7#[note]
8pub(crate) struct ParamNotCaptured {
9    #[primary_span]
10    pub opaque_span: Span,
11    #[label]
12    pub param_span: Span,
13    pub kind: &'static str,
14}
15
16#[derive(Diagnostic)]
17#[diag(hir_analysis_self_ty_not_captured)]
18#[note]
19pub(crate) struct SelfTyNotCaptured {
20    #[primary_span]
21    pub opaque_span: Span,
22    #[label]
23    pub trait_span: Span,
24}
25
26#[derive(Diagnostic)]
27#[diag(hir_analysis_lifetime_not_captured)]
28pub(crate) struct LifetimeNotCaptured {
29    #[primary_span]
30    pub use_span: Span,
31    #[label(hir_analysis_param_label)]
32    pub param_span: Span,
33    #[label]
34    pub opaque_span: Span,
35}
36
37#[derive(Diagnostic)]
38#[diag(hir_analysis_lifetime_implicitly_captured)]
39pub(crate) struct LifetimeImplicitlyCaptured {
40    #[primary_span]
41    pub opaque_span: Span,
42    #[label(hir_analysis_param_label)]
43    pub param_span: Span,
44}
45
46#[derive(Diagnostic)]
47#[diag(hir_analysis_bad_precise_capture)]
48pub(crate) struct BadPreciseCapture {
49    #[primary_span]
50    pub span: Span,
51    pub kind: &'static str,
52    pub found: String,
53}
54
55#[derive(Diagnostic)]
56#[diag(hir_analysis_precise_capture_self_alias, code = E0799)]
57pub(crate) struct PreciseCaptureSelfAlias {
58    #[primary_span]
59    pub span: Span,
60    #[label]
61    pub self_span: Span,
62    pub what: &'static str,
63}
64
65#[derive(Diagnostic)]
66#[diag(hir_analysis_duplicate_precise_capture)]
67pub(crate) struct DuplicatePreciseCapture {
68    #[primary_span]
69    pub first_span: Span,
70    pub name: Symbol,
71    #[label]
72    pub second_span: Span,
73}
74
75#[derive(Diagnostic)]
76#[diag(hir_analysis_lifetime_must_be_first)]
77pub(crate) struct LifetimesMustBeFirst {
78    #[primary_span]
79    pub lifetime_span: Span,
80    pub name: Symbol,
81    #[label]
82    pub other_span: Span,
83}