diff options
Diffstat (limited to 'crates/ra_hir/src/from_id.rs')
-rw-r--r-- | crates/ra_hir/src/from_id.rs | 70 |
1 files changed, 52 insertions, 18 deletions
diff --git a/crates/ra_hir/src/from_id.rs b/crates/ra_hir/src/from_id.rs index a3e9d8525..619f6055e 100644 --- a/crates/ra_hir/src/from_id.rs +++ b/crates/ra_hir/src/from_id.rs | |||
@@ -4,13 +4,13 @@ | |||
4 | //! are splitting the hir. | 4 | //! are splitting the hir. |
5 | 5 | ||
6 | use hir_def::{ | 6 | use hir_def::{ |
7 | AdtId, AssocItemId, ConstId, DefWithBodyId, EnumId, EnumVariantId, FunctionId, GenericDefId, | 7 | AdtId, AssocItemId, AttrDefId, ConstId, DefWithBodyId, EnumId, EnumVariantId, FunctionId, |
8 | ModuleDefId, StaticId, StructId, TypeAliasId, UnionId, | 8 | GenericDefId, ModuleDefId, StaticId, StructFieldId, StructId, TypeAliasId, UnionId, VariantId, |
9 | }; | 9 | }; |
10 | 10 | ||
11 | use crate::{ | 11 | use crate::{ |
12 | ty::TypableDef, Adt, AssocItem, Const, Crate, DefWithBody, EnumVariant, Function, GenericDef, | 12 | ty::TypableDef, Adt, AssocItem, AttrDef, Const, Crate, DefWithBody, EnumVariant, Function, |
13 | ModuleDef, Static, TypeAlias, | 13 | GenericDef, ModuleDef, Static, StructField, TypeAlias, VariantDef, |
14 | }; | 14 | }; |
15 | 15 | ||
16 | impl From<ra_db::CrateId> for Crate { | 16 | impl From<ra_db::CrateId> for Crate { |
@@ -69,6 +69,12 @@ impl From<EnumVariantId> for EnumVariant { | |||
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | impl From<EnumVariant> for EnumVariantId { | ||
73 | fn from(def: EnumVariant) -> Self { | ||
74 | EnumVariantId { parent: def.parent.id, local_id: def.id } | ||
75 | } | ||
76 | } | ||
77 | |||
72 | impl From<ModuleDefId> for ModuleDef { | 78 | impl From<ModuleDefId> for ModuleDef { |
73 | fn from(id: ModuleDefId) -> Self { | 79 | fn from(id: ModuleDefId) -> Self { |
74 | match id { | 80 | match id { |
@@ -131,20 +137,6 @@ impl From<GenericDef> for GenericDefId { | |||
131 | } | 137 | } |
132 | } | 138 | } |
133 | 139 | ||
134 | impl From<GenericDefId> for GenericDef { | ||
135 | fn from(def: GenericDefId) -> Self { | ||
136 | match def { | ||
137 | GenericDefId::FunctionId(it) => GenericDef::Function(it.into()), | ||
138 | GenericDefId::AdtId(it) => GenericDef::Adt(it.into()), | ||
139 | GenericDefId::TraitId(it) => GenericDef::Trait(it.into()), | ||
140 | GenericDefId::TypeAliasId(it) => GenericDef::TypeAlias(it.into()), | ||
141 | GenericDefId::ImplId(it) => GenericDef::ImplBlock(it.into()), | ||
142 | GenericDefId::EnumVariantId(it) => GenericDef::EnumVariant(it.into()), | ||
143 | GenericDefId::ConstId(it) => GenericDef::Const(it.into()), | ||
144 | } | ||
145 | } | ||
146 | } | ||
147 | |||
148 | impl From<AdtId> for TypableDef { | 140 | impl From<AdtId> for TypableDef { |
149 | fn from(id: AdtId) -> Self { | 141 | fn from(id: AdtId) -> Self { |
150 | Adt::from(id).into() | 142 | Adt::from(id).into() |
@@ -206,3 +198,45 @@ impl From<Adt> for GenericDefId { | |||
206 | } | 198 | } |
207 | } | 199 | } |
208 | } | 200 | } |
201 | |||
202 | impl From<VariantDef> for VariantId { | ||
203 | fn from(def: VariantDef) -> Self { | ||
204 | match def { | ||
205 | VariantDef::Struct(it) => VariantId::StructId(it.id), | ||
206 | VariantDef::EnumVariant(it) => VariantId::EnumVariantId(it.into()), | ||
207 | } | ||
208 | } | ||
209 | } | ||
210 | |||
211 | impl From<StructField> for StructFieldId { | ||
212 | fn from(def: StructField) -> Self { | ||
213 | StructFieldId { parent: def.parent.into(), local_id: def.id } | ||
214 | } | ||
215 | } | ||
216 | |||
217 | impl From<AttrDef> for AttrDefId { | ||
218 | fn from(def: AttrDef) -> Self { | ||
219 | match def { | ||
220 | AttrDef::Module(it) => AttrDefId::ModuleId(it.id), | ||
221 | AttrDef::StructField(it) => AttrDefId::StructFieldId(it.into()), | ||
222 | AttrDef::Adt(it) => AttrDefId::AdtId(it.into()), | ||
223 | AttrDef::Function(it) => AttrDefId::FunctionId(it.id), | ||
224 | AttrDef::EnumVariant(it) => AttrDefId::EnumVariantId(it.into()), | ||
225 | AttrDef::Static(it) => AttrDefId::StaticId(it.id), | ||
226 | AttrDef::Const(it) => AttrDefId::ConstId(it.id), | ||
227 | AttrDef::Trait(it) => AttrDefId::TraitId(it.id), | ||
228 | AttrDef::TypeAlias(it) => AttrDefId::TypeAliasId(it.id), | ||
229 | AttrDef::MacroDef(it) => AttrDefId::MacroDefId(it.id), | ||
230 | } | ||
231 | } | ||
232 | } | ||
233 | |||
234 | impl From<AssocItem> for GenericDefId { | ||
235 | fn from(item: AssocItem) -> Self { | ||
236 | match item { | ||
237 | AssocItem::Function(f) => f.id.into(), | ||
238 | AssocItem::Const(c) => c.id.into(), | ||
239 | AssocItem::TypeAlias(t) => t.id.into(), | ||
240 | } | ||
241 | } | ||
242 | } | ||