diff options
Diffstat (limited to 'crates/hir/src')
-rw-r--r-- | crates/hir/src/attrs.rs | 6 | ||||
-rw-r--r-- | crates/hir/src/code_model.rs | 45 | ||||
-rw-r--r-- | crates/hir/src/from_id.rs | 23 | ||||
-rw-r--r-- | crates/hir/src/has_source.rs | 6 | ||||
-rw-r--r-- | crates/hir/src/lib.rs | 6 | ||||
-rw-r--r-- | crates/hir/src/semantics.rs | 4 | ||||
-rw-r--r-- | crates/hir/src/source_analyzer.rs | 18 |
7 files changed, 51 insertions, 57 deletions
diff --git a/crates/hir/src/attrs.rs b/crates/hir/src/attrs.rs index 1f2ee2580..d32ce37ed 100644 --- a/crates/hir/src/attrs.rs +++ b/crates/hir/src/attrs.rs | |||
@@ -10,8 +10,8 @@ use hir_ty::db::HirDatabase; | |||
10 | use syntax::ast; | 10 | use syntax::ast; |
11 | 11 | ||
12 | use crate::{ | 12 | use crate::{ |
13 | Adt, Const, Enum, EnumVariant, Field, Function, MacroDef, Module, ModuleDef, Static, Struct, | 13 | Adt, Const, Enum, Field, Function, MacroDef, Module, ModuleDef, Static, Struct, Trait, |
14 | Trait, TypeAlias, Union, | 14 | TypeAlias, Union, Variant, |
15 | }; | 15 | }; |
16 | 16 | ||
17 | pub trait HasAttrs { | 17 | pub trait HasAttrs { |
@@ -53,7 +53,7 @@ macro_rules! impl_has_attrs { | |||
53 | 53 | ||
54 | impl_has_attrs![ | 54 | impl_has_attrs![ |
55 | (Field, FieldId), | 55 | (Field, FieldId), |
56 | (EnumVariant, EnumVariantId), | 56 | (Variant, EnumVariantId), |
57 | (Static, StaticId), | 57 | (Static, StaticId), |
58 | (Const, ConstId), | 58 | (Const, ConstId), |
59 | (Trait, TraitId), | 59 | (Trait, TraitId), |
diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index 3248f6d20..73ca6ba9f 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs | |||
@@ -161,7 +161,7 @@ pub enum ModuleDef { | |||
161 | Function(Function), | 161 | Function(Function), |
162 | Adt(Adt), | 162 | Adt(Adt), |
163 | // Can't be directly declared, but can be imported. | 163 | // Can't be directly declared, but can be imported. |
164 | EnumVariant(EnumVariant), | 164 | Variant(Variant), |
165 | Const(Const), | 165 | Const(Const), |
166 | Static(Static), | 166 | Static(Static), |
167 | Trait(Trait), | 167 | Trait(Trait), |
@@ -172,7 +172,7 @@ impl_from!( | |||
172 | Module, | 172 | Module, |
173 | Function, | 173 | Function, |
174 | Adt(Struct, Enum, Union), | 174 | Adt(Struct, Enum, Union), |
175 | EnumVariant, | 175 | Variant, |
176 | Const, | 176 | Const, |
177 | Static, | 177 | Static, |
178 | Trait, | 178 | Trait, |
@@ -186,7 +186,7 @@ impl From<VariantDef> for ModuleDef { | |||
186 | match var { | 186 | match var { |
187 | VariantDef::Struct(t) => Adt::from(t).into(), | 187 | VariantDef::Struct(t) => Adt::from(t).into(), |
188 | VariantDef::Union(t) => Adt::from(t).into(), | 188 | VariantDef::Union(t) => Adt::from(t).into(), |
189 | VariantDef::EnumVariant(t) => t.into(), | 189 | VariantDef::Variant(t) => t.into(), |
190 | } | 190 | } |
191 | } | 191 | } |
192 | } | 192 | } |
@@ -197,7 +197,7 @@ impl ModuleDef { | |||
197 | ModuleDef::Module(it) => it.parent(db), | 197 | ModuleDef::Module(it) => it.parent(db), |
198 | ModuleDef::Function(it) => Some(it.module(db)), | 198 | ModuleDef::Function(it) => Some(it.module(db)), |
199 | ModuleDef::Adt(it) => Some(it.module(db)), | 199 | ModuleDef::Adt(it) => Some(it.module(db)), |
200 | ModuleDef::EnumVariant(it) => Some(it.module(db)), | 200 | ModuleDef::Variant(it) => Some(it.module(db)), |
201 | ModuleDef::Const(it) => Some(it.module(db)), | 201 | ModuleDef::Const(it) => Some(it.module(db)), |
202 | ModuleDef::Static(it) => Some(it.module(db)), | 202 | ModuleDef::Static(it) => Some(it.module(db)), |
203 | ModuleDef::Trait(it) => Some(it.module(db)), | 203 | ModuleDef::Trait(it) => Some(it.module(db)), |
@@ -221,7 +221,7 @@ impl ModuleDef { | |||
221 | ModuleDef::Module(it) => it.parent(db)?, | 221 | ModuleDef::Module(it) => it.parent(db)?, |
222 | ModuleDef::Function(it) => return Some(it.visibility(db)), | 222 | ModuleDef::Function(it) => return Some(it.visibility(db)), |
223 | ModuleDef::Adt(it) => it.module(db), | 223 | ModuleDef::Adt(it) => it.module(db), |
224 | ModuleDef::EnumVariant(it) => { | 224 | ModuleDef::Variant(it) => { |
225 | let parent = it.parent_enum(db); | 225 | let parent = it.parent_enum(db); |
226 | let module = it.module(db); | 226 | let module = it.module(db); |
227 | return module.visibility_of(db, &ModuleDef::Adt(Adt::Enum(parent))); | 227 | return module.visibility_of(db, &ModuleDef::Adt(Adt::Enum(parent))); |
@@ -241,7 +241,7 @@ impl ModuleDef { | |||
241 | ModuleDef::Adt(it) => Some(it.name(db)), | 241 | ModuleDef::Adt(it) => Some(it.name(db)), |
242 | ModuleDef::Trait(it) => Some(it.name(db)), | 242 | ModuleDef::Trait(it) => Some(it.name(db)), |
243 | ModuleDef::Function(it) => Some(it.name(db)), | 243 | ModuleDef::Function(it) => Some(it.name(db)), |
244 | ModuleDef::EnumVariant(it) => Some(it.name(db)), | 244 | ModuleDef::Variant(it) => Some(it.name(db)), |
245 | ModuleDef::TypeAlias(it) => Some(it.name(db)), | 245 | ModuleDef::TypeAlias(it) => Some(it.name(db)), |
246 | ModuleDef::Module(it) => it.name(db), | 246 | ModuleDef::Module(it) => it.name(db), |
247 | ModuleDef::Const(it) => it.name(db), | 247 | ModuleDef::Const(it) => it.name(db), |
@@ -455,7 +455,7 @@ impl Field { | |||
455 | let generic_def_id: GenericDefId = match self.parent { | 455 | let generic_def_id: GenericDefId = match self.parent { |
456 | VariantDef::Struct(it) => it.id.into(), | 456 | VariantDef::Struct(it) => it.id.into(), |
457 | VariantDef::Union(it) => it.id.into(), | 457 | VariantDef::Union(it) => it.id.into(), |
458 | VariantDef::EnumVariant(it) => it.parent.id.into(), | 458 | VariantDef::Variant(it) => it.parent.id.into(), |
459 | }; | 459 | }; |
460 | let substs = Substs::type_params(db, generic_def_id); | 460 | let substs = Substs::type_params(db, generic_def_id); |
461 | let ty = db.field_types(var_id)[self.id].clone().subst(&substs); | 461 | let ty = db.field_types(var_id)[self.id].clone().subst(&substs); |
@@ -566,12 +566,8 @@ impl Enum { | |||
566 | db.enum_data(self.id).name.clone() | 566 | db.enum_data(self.id).name.clone() |
567 | } | 567 | } |
568 | 568 | ||
569 | pub fn variants(self, db: &dyn HirDatabase) -> Vec<EnumVariant> { | 569 | pub fn variants(self, db: &dyn HirDatabase) -> Vec<Variant> { |
570 | db.enum_data(self.id) | 570 | db.enum_data(self.id).variants.iter().map(|(id, _)| Variant { parent: self, id }).collect() |
571 | .variants | ||
572 | .iter() | ||
573 | .map(|(id, _)| EnumVariant { parent: self, id }) | ||
574 | .collect() | ||
575 | } | 571 | } |
576 | 572 | ||
577 | pub fn ty(self, db: &dyn HirDatabase) -> Type { | 573 | pub fn ty(self, db: &dyn HirDatabase) -> Type { |
@@ -580,12 +576,12 @@ impl Enum { | |||
580 | } | 576 | } |
581 | 577 | ||
582 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 578 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
583 | pub struct EnumVariant { | 579 | pub struct Variant { |
584 | pub(crate) parent: Enum, | 580 | pub(crate) parent: Enum, |
585 | pub(crate) id: LocalEnumVariantId, | 581 | pub(crate) id: LocalEnumVariantId, |
586 | } | 582 | } |
587 | 583 | ||
588 | impl EnumVariant { | 584 | impl Variant { |
589 | pub fn module(self, db: &dyn HirDatabase) -> Module { | 585 | pub fn module(self, db: &dyn HirDatabase) -> Module { |
590 | self.parent.module(db) | 586 | self.parent.module(db) |
591 | } | 587 | } |
@@ -662,16 +658,16 @@ impl Adt { | |||
662 | pub enum VariantDef { | 658 | pub enum VariantDef { |
663 | Struct(Struct), | 659 | Struct(Struct), |
664 | Union(Union), | 660 | Union(Union), |
665 | EnumVariant(EnumVariant), | 661 | Variant(Variant), |
666 | } | 662 | } |
667 | impl_from!(Struct, Union, EnumVariant for VariantDef); | 663 | impl_from!(Struct, Union, Variant for VariantDef); |
668 | 664 | ||
669 | impl VariantDef { | 665 | impl VariantDef { |
670 | pub fn fields(self, db: &dyn HirDatabase) -> Vec<Field> { | 666 | pub fn fields(self, db: &dyn HirDatabase) -> Vec<Field> { |
671 | match self { | 667 | match self { |
672 | VariantDef::Struct(it) => it.fields(db), | 668 | VariantDef::Struct(it) => it.fields(db), |
673 | VariantDef::Union(it) => it.fields(db), | 669 | VariantDef::Union(it) => it.fields(db), |
674 | VariantDef::EnumVariant(it) => it.fields(db), | 670 | VariantDef::Variant(it) => it.fields(db), |
675 | } | 671 | } |
676 | } | 672 | } |
677 | 673 | ||
@@ -679,7 +675,7 @@ impl VariantDef { | |||
679 | match self { | 675 | match self { |
680 | VariantDef::Struct(it) => it.module(db), | 676 | VariantDef::Struct(it) => it.module(db), |
681 | VariantDef::Union(it) => it.module(db), | 677 | VariantDef::Union(it) => it.module(db), |
682 | VariantDef::EnumVariant(it) => it.module(db), | 678 | VariantDef::Variant(it) => it.module(db), |
683 | } | 679 | } |
684 | } | 680 | } |
685 | 681 | ||
@@ -687,7 +683,7 @@ impl VariantDef { | |||
687 | match self { | 683 | match self { |
688 | VariantDef::Struct(s) => s.name(db), | 684 | VariantDef::Struct(s) => s.name(db), |
689 | VariantDef::Union(u) => u.name(db), | 685 | VariantDef::Union(u) => u.name(db), |
690 | VariantDef::EnumVariant(e) => e.name(db), | 686 | VariantDef::Variant(e) => e.name(db), |
691 | } | 687 | } |
692 | } | 688 | } |
693 | 689 | ||
@@ -695,7 +691,7 @@ impl VariantDef { | |||
695 | match self { | 691 | match self { |
696 | VariantDef::Struct(it) => it.variant_data(db), | 692 | VariantDef::Struct(it) => it.variant_data(db), |
697 | VariantDef::Union(it) => it.variant_data(db), | 693 | VariantDef::Union(it) => it.variant_data(db), |
698 | VariantDef::EnumVariant(it) => it.variant_data(db), | 694 | VariantDef::Variant(it) => it.variant_data(db), |
699 | } | 695 | } |
700 | } | 696 | } |
701 | } | 697 | } |
@@ -1095,7 +1091,7 @@ pub enum GenericDef { | |||
1095 | Impl(Impl), | 1091 | Impl(Impl), |
1096 | // enum variants cannot have generics themselves, but their parent enums | 1092 | // enum variants cannot have generics themselves, but their parent enums |
1097 | // can, and this makes some code easier to write | 1093 | // can, and this makes some code easier to write |
1098 | EnumVariant(EnumVariant), | 1094 | Variant(Variant), |
1099 | // consts can have type parameters from their parents (i.e. associated consts of traits) | 1095 | // consts can have type parameters from their parents (i.e. associated consts of traits) |
1100 | Const(Const), | 1096 | Const(Const), |
1101 | } | 1097 | } |
@@ -1105,7 +1101,7 @@ impl_from!( | |||
1105 | Trait, | 1101 | Trait, |
1106 | TypeAlias, | 1102 | TypeAlias, |
1107 | Impl, | 1103 | Impl, |
1108 | EnumVariant, | 1104 | Variant, |
1109 | Const | 1105 | Const |
1110 | for GenericDef | 1106 | for GenericDef |
1111 | ); | 1107 | ); |
@@ -1272,7 +1268,6 @@ impl LifetimeParam { | |||
1272 | } | 1268 | } |
1273 | } | 1269 | } |
1274 | 1270 | ||
1275 | // FIXME: rename from `ImplDef` to `Impl` | ||
1276 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] | 1271 | #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] |
1277 | pub struct Impl { | 1272 | pub struct Impl { |
1278 | pub(crate) id: ImplId, | 1273 | pub(crate) id: ImplId, |
@@ -1847,7 +1842,7 @@ pub struct Callable { | |||
1847 | pub enum CallableKind { | 1842 | pub enum CallableKind { |
1848 | Function(Function), | 1843 | Function(Function), |
1849 | TupleStruct(Struct), | 1844 | TupleStruct(Struct), |
1850 | TupleEnumVariant(EnumVariant), | 1845 | TupleEnumVariant(Variant), |
1851 | Closure, | 1846 | Closure, |
1852 | } | 1847 | } |
1853 | 1848 | ||
diff --git a/crates/hir/src/from_id.rs b/crates/hir/src/from_id.rs index 8d0f84508..8e0c571b8 100644 --- a/crates/hir/src/from_id.rs +++ b/crates/hir/src/from_id.rs | |||
@@ -9,8 +9,7 @@ use hir_def::{ | |||
9 | }; | 9 | }; |
10 | 10 | ||
11 | use crate::{ | 11 | use crate::{ |
12 | Adt, AssocItem, DefWithBody, EnumVariant, Field, GenericDef, Local, MacroDef, ModuleDef, | 12 | Adt, AssocItem, DefWithBody, Field, GenericDef, Local, MacroDef, ModuleDef, Variant, VariantDef, |
13 | VariantDef, | ||
14 | }; | 13 | }; |
15 | 14 | ||
16 | macro_rules! from_id { | 15 | macro_rules! from_id { |
@@ -65,14 +64,14 @@ impl From<Adt> for AdtId { | |||
65 | } | 64 | } |
66 | } | 65 | } |
67 | 66 | ||
68 | impl From<EnumVariantId> for EnumVariant { | 67 | impl From<EnumVariantId> for Variant { |
69 | fn from(id: EnumVariantId) -> Self { | 68 | fn from(id: EnumVariantId) -> Self { |
70 | EnumVariant { parent: id.parent.into(), id: id.local_id } | 69 | Variant { parent: id.parent.into(), id: id.local_id } |
71 | } | 70 | } |
72 | } | 71 | } |
73 | 72 | ||
74 | impl From<EnumVariant> for EnumVariantId { | 73 | impl From<Variant> for EnumVariantId { |
75 | fn from(def: EnumVariant) -> Self { | 74 | fn from(def: Variant) -> Self { |
76 | EnumVariantId { parent: def.parent.id, local_id: def.id } | 75 | EnumVariantId { parent: def.parent.id, local_id: def.id } |
77 | } | 76 | } |
78 | } | 77 | } |
@@ -83,7 +82,7 @@ impl From<ModuleDefId> for ModuleDef { | |||
83 | ModuleDefId::ModuleId(it) => ModuleDef::Module(it.into()), | 82 | ModuleDefId::ModuleId(it) => ModuleDef::Module(it.into()), |
84 | ModuleDefId::FunctionId(it) => ModuleDef::Function(it.into()), | 83 | ModuleDefId::FunctionId(it) => ModuleDef::Function(it.into()), |
85 | ModuleDefId::AdtId(it) => ModuleDef::Adt(it.into()), | 84 | ModuleDefId::AdtId(it) => ModuleDef::Adt(it.into()), |
86 | ModuleDefId::EnumVariantId(it) => ModuleDef::EnumVariant(it.into()), | 85 | ModuleDefId::EnumVariantId(it) => ModuleDef::Variant(it.into()), |
87 | ModuleDefId::ConstId(it) => ModuleDef::Const(it.into()), | 86 | ModuleDefId::ConstId(it) => ModuleDef::Const(it.into()), |
88 | ModuleDefId::StaticId(it) => ModuleDef::Static(it.into()), | 87 | ModuleDefId::StaticId(it) => ModuleDef::Static(it.into()), |
89 | ModuleDefId::TraitId(it) => ModuleDef::Trait(it.into()), | 88 | ModuleDefId::TraitId(it) => ModuleDef::Trait(it.into()), |
@@ -99,7 +98,7 @@ impl From<ModuleDef> for ModuleDefId { | |||
99 | ModuleDef::Module(it) => ModuleDefId::ModuleId(it.into()), | 98 | ModuleDef::Module(it) => ModuleDefId::ModuleId(it.into()), |
100 | ModuleDef::Function(it) => ModuleDefId::FunctionId(it.into()), | 99 | ModuleDef::Function(it) => ModuleDefId::FunctionId(it.into()), |
101 | ModuleDef::Adt(it) => ModuleDefId::AdtId(it.into()), | 100 | ModuleDef::Adt(it) => ModuleDefId::AdtId(it.into()), |
102 | ModuleDef::EnumVariant(it) => ModuleDefId::EnumVariantId(it.into()), | 101 | ModuleDef::Variant(it) => ModuleDefId::EnumVariantId(it.into()), |
103 | ModuleDef::Const(it) => ModuleDefId::ConstId(it.into()), | 102 | ModuleDef::Const(it) => ModuleDefId::ConstId(it.into()), |
104 | ModuleDef::Static(it) => ModuleDefId::StaticId(it.into()), | 103 | ModuleDef::Static(it) => ModuleDefId::StaticId(it.into()), |
105 | ModuleDef::Trait(it) => ModuleDefId::TraitId(it.into()), | 104 | ModuleDef::Trait(it) => ModuleDefId::TraitId(it.into()), |
@@ -147,7 +146,7 @@ impl From<GenericDef> for GenericDefId { | |||
147 | GenericDef::Trait(it) => GenericDefId::TraitId(it.id), | 146 | GenericDef::Trait(it) => GenericDefId::TraitId(it.id), |
148 | GenericDef::TypeAlias(it) => GenericDefId::TypeAliasId(it.id), | 147 | GenericDef::TypeAlias(it) => GenericDefId::TypeAliasId(it.id), |
149 | GenericDef::Impl(it) => GenericDefId::ImplId(it.id), | 148 | GenericDef::Impl(it) => GenericDefId::ImplId(it.id), |
150 | GenericDef::EnumVariant(it) => { | 149 | GenericDef::Variant(it) => { |
151 | GenericDefId::EnumVariantId(EnumVariantId { parent: it.parent.id, local_id: it.id }) | 150 | GenericDefId::EnumVariantId(EnumVariantId { parent: it.parent.id, local_id: it.id }) |
152 | } | 151 | } |
153 | GenericDef::Const(it) => GenericDefId::ConstId(it.id), | 152 | GenericDef::Const(it) => GenericDefId::ConstId(it.id), |
@@ -164,7 +163,7 @@ impl From<GenericDefId> for GenericDef { | |||
164 | GenericDefId::TypeAliasId(it) => GenericDef::TypeAlias(it.into()), | 163 | GenericDefId::TypeAliasId(it) => GenericDef::TypeAlias(it.into()), |
165 | GenericDefId::ImplId(it) => GenericDef::Impl(it.into()), | 164 | GenericDefId::ImplId(it) => GenericDef::Impl(it.into()), |
166 | GenericDefId::EnumVariantId(it) => { | 165 | GenericDefId::EnumVariantId(it) => { |
167 | GenericDef::EnumVariant(EnumVariant { parent: it.parent.into(), id: it.local_id }) | 166 | GenericDef::Variant(Variant { parent: it.parent.into(), id: it.local_id }) |
168 | } | 167 | } |
169 | GenericDefId::ConstId(it) => GenericDef::Const(it.into()), | 168 | GenericDefId::ConstId(it) => GenericDef::Const(it.into()), |
170 | } | 169 | } |
@@ -185,7 +184,7 @@ impl From<VariantId> for VariantDef { | |||
185 | fn from(def: VariantId) -> Self { | 184 | fn from(def: VariantId) -> Self { |
186 | match def { | 185 | match def { |
187 | VariantId::StructId(it) => VariantDef::Struct(it.into()), | 186 | VariantId::StructId(it) => VariantDef::Struct(it.into()), |
188 | VariantId::EnumVariantId(it) => VariantDef::EnumVariant(it.into()), | 187 | VariantId::EnumVariantId(it) => VariantDef::Variant(it.into()), |
189 | VariantId::UnionId(it) => VariantDef::Union(it.into()), | 188 | VariantId::UnionId(it) => VariantDef::Union(it.into()), |
190 | } | 189 | } |
191 | } | 190 | } |
@@ -195,7 +194,7 @@ impl From<VariantDef> for VariantId { | |||
195 | fn from(def: VariantDef) -> Self { | 194 | fn from(def: VariantDef) -> Self { |
196 | match def { | 195 | match def { |
197 | VariantDef::Struct(it) => VariantId::StructId(it.id), | 196 | VariantDef::Struct(it) => VariantId::StructId(it.id), |
198 | VariantDef::EnumVariant(it) => VariantId::EnumVariantId(it.into()), | 197 | VariantDef::Variant(it) => VariantId::EnumVariantId(it.into()), |
199 | VariantDef::Union(it) => VariantId::UnionId(it.id), | 198 | VariantDef::Union(it) => VariantId::UnionId(it.id), |
200 | } | 199 | } |
201 | } | 200 | } |
diff --git a/crates/hir/src/has_source.rs b/crates/hir/src/has_source.rs index c5b81b252..0dc07c33e 100644 --- a/crates/hir/src/has_source.rs +++ b/crates/hir/src/has_source.rs | |||
@@ -10,8 +10,8 @@ use hir_expand::InFile; | |||
10 | use syntax::ast; | 10 | use syntax::ast; |
11 | 11 | ||
12 | use crate::{ | 12 | use crate::{ |
13 | db::HirDatabase, Const, Enum, EnumVariant, Field, FieldSource, Function, Impl, LifetimeParam, | 13 | db::HirDatabase, Const, Enum, Field, FieldSource, Function, Impl, LifetimeParam, MacroDef, |
14 | MacroDef, Module, Static, Struct, Trait, TypeAlias, TypeParam, Union, | 14 | Module, Static, Struct, Trait, TypeAlias, TypeParam, Union, Variant, |
15 | }; | 15 | }; |
16 | 16 | ||
17 | pub trait HasSource { | 17 | pub trait HasSource { |
@@ -73,7 +73,7 @@ impl HasSource for Enum { | |||
73 | self.id.lookup(db.upcast()).source(db.upcast()) | 73 | self.id.lookup(db.upcast()).source(db.upcast()) |
74 | } | 74 | } |
75 | } | 75 | } |
76 | impl HasSource for EnumVariant { | 76 | impl HasSource for Variant { |
77 | type Ast = ast::Variant; | 77 | type Ast = ast::Variant; |
78 | fn source(self, db: &dyn HirDatabase) -> InFile<ast::Variant> { | 78 | fn source(self, db: &dyn HirDatabase) -> InFile<ast::Variant> { |
79 | self.parent.id.child_source(db.upcast()).map(|map| map[self.id].clone()) | 79 | self.parent.id.child_source(db.upcast()).map(|map| map[self.id].clone()) |
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs index 3f4f8d8e4..bdd270c58 100644 --- a/crates/hir/src/lib.rs +++ b/crates/hir/src/lib.rs | |||
@@ -34,9 +34,9 @@ pub use crate::{ | |||
34 | attrs::{HasAttrs, Namespace}, | 34 | attrs::{HasAttrs, Namespace}, |
35 | code_model::{ | 35 | code_model::{ |
36 | Access, Adt, AsAssocItem, AssocItem, AssocItemContainer, Callable, CallableKind, Const, | 36 | Access, Adt, AsAssocItem, AssocItem, AssocItemContainer, Callable, CallableKind, Const, |
37 | Crate, CrateDependency, DefWithBody, Enum, EnumVariant, Field, FieldSource, Function, | 37 | Crate, CrateDependency, DefWithBody, Enum, Field, FieldSource, Function, GenericDef, |
38 | GenericDef, HasVisibility, Impl, LifetimeParam, Local, MacroDef, Module, ModuleDef, | 38 | HasVisibility, Impl, LifetimeParam, Local, MacroDef, Module, ModuleDef, ScopeDef, Static, |
39 | ScopeDef, Static, Struct, Trait, Type, TypeAlias, TypeParam, Union, VariantDef, | 39 | Struct, Trait, Type, TypeAlias, TypeParam, Union, Variant, VariantDef, |
40 | }, | 40 | }, |
41 | has_source::HasSource, | 41 | has_source::HasSource, |
42 | semantics::{PathResolution, Semantics, SemanticsScope}, | 42 | semantics::{PathResolution, Semantics, SemanticsScope}, |
diff --git a/crates/hir/src/semantics.rs b/crates/hir/src/semantics.rs index 83ec91f58..25ebf73d8 100644 --- a/crates/hir/src/semantics.rs +++ b/crates/hir/src/semantics.rs | |||
@@ -51,7 +51,7 @@ impl PathResolution { | |||
51 | Some(TypeNs::BuiltinType(*builtin)) | 51 | Some(TypeNs::BuiltinType(*builtin)) |
52 | } | 52 | } |
53 | PathResolution::Def(ModuleDef::Const(_)) | 53 | PathResolution::Def(ModuleDef::Const(_)) |
54 | | PathResolution::Def(ModuleDef::EnumVariant(_)) | 54 | | PathResolution::Def(ModuleDef::Variant(_)) |
55 | | PathResolution::Def(ModuleDef::Function(_)) | 55 | | PathResolution::Def(ModuleDef::Function(_)) |
56 | | PathResolution::Def(ModuleDef::Module(_)) | 56 | | PathResolution::Def(ModuleDef::Module(_)) |
57 | | PathResolution::Def(ModuleDef::Static(_)) | 57 | | PathResolution::Def(ModuleDef::Static(_)) |
@@ -715,7 +715,7 @@ to_def_impls![ | |||
715 | (crate::Function, ast::Fn, fn_to_def), | 715 | (crate::Function, ast::Fn, fn_to_def), |
716 | (crate::Field, ast::RecordField, record_field_to_def), | 716 | (crate::Field, ast::RecordField, record_field_to_def), |
717 | (crate::Field, ast::TupleField, tuple_field_to_def), | 717 | (crate::Field, ast::TupleField, tuple_field_to_def), |
718 | (crate::EnumVariant, ast::Variant, enum_variant_to_def), | 718 | (crate::Variant, ast::Variant, enum_variant_to_def), |
719 | (crate::TypeParam, ast::TypeParam, type_param_to_def), | 719 | (crate::TypeParam, ast::TypeParam, type_param_to_def), |
720 | (crate::LifetimeParam, ast::LifetimeParam, lifetime_param_to_def), | 720 | (crate::LifetimeParam, ast::LifetimeParam, lifetime_param_to_def), |
721 | (crate::MacroDef, ast::MacroRules, macro_rules_to_def), | 721 | (crate::MacroDef, ast::MacroRules, macro_rules_to_def), |
diff --git a/crates/hir/src/source_analyzer.rs b/crates/hir/src/source_analyzer.rs index bf0c959fe..bddc49c05 100644 --- a/crates/hir/src/source_analyzer.rs +++ b/crates/hir/src/source_analyzer.rs | |||
@@ -28,8 +28,8 @@ use syntax::{ | |||
28 | }; | 28 | }; |
29 | 29 | ||
30 | use crate::{ | 30 | use crate::{ |
31 | db::HirDatabase, semantics::PathResolution, Adt, Const, EnumVariant, Field, Function, Local, | 31 | db::HirDatabase, semantics::PathResolution, Adt, Const, Field, Function, Local, MacroDef, |
32 | MacroDef, ModuleDef, Static, Struct, Trait, Type, TypeAlias, TypeParam, | 32 | ModuleDef, Static, Struct, Trait, Type, TypeAlias, TypeParam, Variant, |
33 | }; | 33 | }; |
34 | use base_db::CrateId; | 34 | use base_db::CrateId; |
35 | 35 | ||
@@ -230,7 +230,7 @@ impl SourceAnalyzer { | |||
230 | if let Some(VariantId::EnumVariantId(variant)) = | 230 | if let Some(VariantId::EnumVariantId(variant)) = |
231 | self.infer.as_ref()?.variant_resolution_for_expr(expr_id) | 231 | self.infer.as_ref()?.variant_resolution_for_expr(expr_id) |
232 | { | 232 | { |
233 | return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into()))); | 233 | return Some(PathResolution::Def(ModuleDef::Variant(variant.into()))); |
234 | } | 234 | } |
235 | } | 235 | } |
236 | 236 | ||
@@ -242,7 +242,7 @@ impl SourceAnalyzer { | |||
242 | if let Some(VariantId::EnumVariantId(variant)) = | 242 | if let Some(VariantId::EnumVariantId(variant)) = |
243 | self.infer.as_ref()?.variant_resolution_for_pat(pat_id) | 243 | self.infer.as_ref()?.variant_resolution_for_pat(pat_id) |
244 | { | 244 | { |
245 | return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into()))); | 245 | return Some(PathResolution::Def(ModuleDef::Variant(variant.into()))); |
246 | } | 246 | } |
247 | } | 247 | } |
248 | 248 | ||
@@ -251,7 +251,7 @@ impl SourceAnalyzer { | |||
251 | if let Some(VariantId::EnumVariantId(variant)) = | 251 | if let Some(VariantId::EnumVariantId(variant)) = |
252 | self.infer.as_ref()?.variant_resolution_for_expr(expr_id) | 252 | self.infer.as_ref()?.variant_resolution_for_expr(expr_id) |
253 | { | 253 | { |
254 | return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into()))); | 254 | return Some(PathResolution::Def(ModuleDef::Variant(variant.into()))); |
255 | } | 255 | } |
256 | } | 256 | } |
257 | 257 | ||
@@ -260,7 +260,7 @@ impl SourceAnalyzer { | |||
260 | if let Some(VariantId::EnumVariantId(variant)) = | 260 | if let Some(VariantId::EnumVariantId(variant)) = |
261 | self.infer.as_ref()?.variant_resolution_for_pat(pat_id) | 261 | self.infer.as_ref()?.variant_resolution_for_pat(pat_id) |
262 | { | 262 | { |
263 | return Some(PathResolution::Def(ModuleDef::EnumVariant(variant.into()))); | 263 | return Some(PathResolution::Def(ModuleDef::Variant(variant.into()))); |
264 | } | 264 | } |
265 | } | 265 | } |
266 | 266 | ||
@@ -459,7 +459,7 @@ pub(crate) fn resolve_hir_path( | |||
459 | TypeNs::AdtSelfType(it) | TypeNs::AdtId(it) => { | 459 | TypeNs::AdtSelfType(it) | TypeNs::AdtId(it) => { |
460 | PathResolution::Def(Adt::from(it).into()) | 460 | PathResolution::Def(Adt::from(it).into()) |
461 | } | 461 | } |
462 | TypeNs::EnumVariantId(it) => PathResolution::Def(EnumVariant::from(it).into()), | 462 | TypeNs::EnumVariantId(it) => PathResolution::Def(Variant::from(it).into()), |
463 | TypeNs::TypeAliasId(it) => PathResolution::Def(TypeAlias::from(it).into()), | 463 | TypeNs::TypeAliasId(it) => PathResolution::Def(TypeAlias::from(it).into()), |
464 | TypeNs::BuiltinType(it) => PathResolution::Def(it.into()), | 464 | TypeNs::BuiltinType(it) => PathResolution::Def(it.into()), |
465 | TypeNs::TraitId(it) => PathResolution::Def(Trait::from(it).into()), | 465 | TypeNs::TraitId(it) => PathResolution::Def(Trait::from(it).into()), |
@@ -477,7 +477,7 @@ pub(crate) fn resolve_hir_path( | |||
477 | ValueNs::ConstId(it) => PathResolution::Def(Const::from(it).into()), | 477 | ValueNs::ConstId(it) => PathResolution::Def(Const::from(it).into()), |
478 | ValueNs::StaticId(it) => PathResolution::Def(Static::from(it).into()), | 478 | ValueNs::StaticId(it) => PathResolution::Def(Static::from(it).into()), |
479 | ValueNs::StructId(it) => PathResolution::Def(Struct::from(it).into()), | 479 | ValueNs::StructId(it) => PathResolution::Def(Struct::from(it).into()), |
480 | ValueNs::EnumVariantId(it) => PathResolution::Def(EnumVariant::from(it).into()), | 480 | ValueNs::EnumVariantId(it) => PathResolution::Def(Variant::from(it).into()), |
481 | ValueNs::ImplSelf(impl_id) => PathResolution::SelfType(impl_id.into()), | 481 | ValueNs::ImplSelf(impl_id) => PathResolution::SelfType(impl_id.into()), |
482 | }; | 482 | }; |
483 | Some(res) | 483 | Some(res) |
@@ -526,7 +526,7 @@ fn resolve_hir_path_qualifier( | |||
526 | TypeNs::SelfType(it) => PathResolution::SelfType(it.into()), | 526 | TypeNs::SelfType(it) => PathResolution::SelfType(it.into()), |
527 | TypeNs::GenericParam(id) => PathResolution::TypeParam(TypeParam { id }), | 527 | TypeNs::GenericParam(id) => PathResolution::TypeParam(TypeParam { id }), |
528 | TypeNs::AdtSelfType(it) | TypeNs::AdtId(it) => PathResolution::Def(Adt::from(it).into()), | 528 | TypeNs::AdtSelfType(it) | TypeNs::AdtId(it) => PathResolution::Def(Adt::from(it).into()), |
529 | TypeNs::EnumVariantId(it) => PathResolution::Def(EnumVariant::from(it).into()), | 529 | TypeNs::EnumVariantId(it) => PathResolution::Def(Variant::from(it).into()), |
530 | TypeNs::TypeAliasId(it) => PathResolution::Def(TypeAlias::from(it).into()), | 530 | TypeNs::TypeAliasId(it) => PathResolution::Def(TypeAlias::from(it).into()), |
531 | TypeNs::BuiltinType(it) => PathResolution::Def(it.into()), | 531 | TypeNs::BuiltinType(it) => PathResolution::Def(it.into()), |
532 | TypeNs::TraitId(it) => PathResolution::Def(Trait::from(it).into()), | 532 | TypeNs::TraitId(it) => PathResolution::Def(Trait::from(it).into()), |