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