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}