hir_ty/lower/
diagnostics.rs1use hir_def::type_ref::TypeRefId;
4use hir_def::{GenericDefId, GenericParamId};
5
6#[derive(Debug, PartialEq, Eq, Clone)]
7pub struct TyLoweringDiagnostic {
8 pub source: TypeRefId,
9 pub kind: TyLoweringDiagnosticKind,
10}
11
12#[derive(Debug, PartialEq, Eq, Clone)]
13pub enum TyLoweringDiagnosticKind {
14 PathDiagnostic(PathLoweringDiagnostic),
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
18pub enum GenericArgsProhibitedReason {
19 Module,
20 TyParam,
21 SelfTy,
22 PrimitiveTy,
23 Const,
24 Static,
25 LocalVariable,
26 EnumVariant,
29}
30
31#[derive(Debug, Clone, Copy, PartialEq, Eq)]
35pub enum PathGenericsSource {
36 Segment(u32),
38 AssocType { segment: u32, assoc_type: u32 },
40}
41
42#[derive(Debug, PartialEq, Eq, Clone)]
43pub enum PathLoweringDiagnostic {
44 GenericArgsProhibited {
45 segment: u32,
46 reason: GenericArgsProhibitedReason,
47 },
48 ParenthesizedGenericArgsWithoutFnTrait {
49 segment: u32,
50 },
51 IncorrectGenericsLen {
53 generics_source: PathGenericsSource,
54 provided_count: u32,
55 expected_count: u32,
56 kind: IncorrectGenericsLenKind,
57 def: GenericDefId,
58 },
59 IncorrectGenericsOrder {
60 generics_source: PathGenericsSource,
61 param_id: GenericParamId,
62 arg_idx: u32,
63 has_self_arg: bool,
65 },
66 ElidedLifetimesInPath {
67 generics_source: PathGenericsSource,
68 def: GenericDefId,
69 expected_count: u32,
70 hard_error: bool,
71 },
72 ElisionFailure {
75 generics_source: PathGenericsSource,
76 def: GenericDefId,
77 expected_count: u32,
78 },
79 MissingLifetime {
80 generics_source: PathGenericsSource,
81 def: GenericDefId,
82 expected_count: u32,
83 },
84}
85
86#[derive(Debug, Clone, Copy, PartialEq, Eq)]
87pub enum IncorrectGenericsLenKind {
88 Lifetimes,
89 TypesAndConsts,
90}