aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/from_id.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/from_id.rs')
-rw-r--r--crates/ra_hir/src/from_id.rs70
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
6use hir_def::{ 6use 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
11use crate::{ 11use 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
16impl From<ra_db::CrateId> for Crate { 16impl From<ra_db::CrateId> for Crate {
@@ -69,6 +69,12 @@ impl From<EnumVariantId> for EnumVariant {
69 } 69 }
70} 70}
71 71
72impl From<EnumVariant> for EnumVariantId {
73 fn from(def: EnumVariant) -> Self {
74 EnumVariantId { parent: def.parent.id, local_id: def.id }
75 }
76}
77
72impl From<ModuleDefId> for ModuleDef { 78impl 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
134impl 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
148impl From<AdtId> for TypableDef { 140impl 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
202impl 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
211impl From<StructField> for StructFieldId {
212 fn from(def: StructField) -> Self {
213 StructFieldId { parent: def.parent.into(), local_id: def.id }
214 }
215}
216
217impl 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
234impl 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}