aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/references/name_definition.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/references/name_definition.rs')
-rw-r--r--crates/ra_ide_api/src/references/name_definition.rs20
1 files changed, 11 insertions, 9 deletions
diff --git a/crates/ra_ide_api/src/references/name_definition.rs b/crates/ra_ide_api/src/references/name_definition.rs
index 58baf3686..723d97237 100644
--- a/crates/ra_ide_api/src/references/name_definition.rs
+++ b/crates/ra_ide_api/src/references/name_definition.rs
@@ -1,3 +1,5 @@
1//! FIXME: write short doc here
2
1use hir::{ 3use hir::{
2 db::AstDatabase, Adt, AssocItem, DefWithBody, FromSource, HasSource, HirFileId, MacroDef, 4 db::AstDatabase, Adt, AssocItem, DefWithBody, FromSource, HasSource, HirFileId, MacroDef,
3 Module, ModuleDef, StructField, Ty, VariantDef, 5 Module, ModuleDef, StructField, Ty, VariantDef,
@@ -22,7 +24,7 @@ pub enum NameKind {
22pub(crate) struct NameDefinition { 24pub(crate) struct NameDefinition {
23 pub visibility: Option<ast::Visibility>, 25 pub visibility: Option<ast::Visibility>,
24 pub container: Module, 26 pub container: Module,
25 pub item: NameKind, 27 pub kind: NameKind,
26} 28}
27 29
28pub(super) fn from_pat( 30pub(super) fn from_pat(
@@ -50,9 +52,9 @@ pub(super) fn from_pat(
50 } 52 }
51 } 53 }
52 })?; 54 })?;
53 let item = NameKind::Pat((def, pat)); 55 let kind = NameKind::Pat((def, pat));
54 let container = def.module(db); 56 let container = def.module(db);
55 Some(NameDefinition { item, container, visibility: None }) 57 Some(NameDefinition { kind, container, visibility: None })
56} 58}
57 59
58pub(super) fn from_assoc_item(db: &RootDatabase, item: AssocItem) -> NameDefinition { 60pub(super) fn from_assoc_item(db: &RootDatabase, item: AssocItem) -> NameDefinition {
@@ -62,19 +64,19 @@ pub(super) fn from_assoc_item(db: &RootDatabase, item: AssocItem) -> NameDefinit
62 AssocItem::Const(c) => c.source(db).ast.visibility(), 64 AssocItem::Const(c) => c.source(db).ast.visibility(),
63 AssocItem::TypeAlias(a) => a.source(db).ast.visibility(), 65 AssocItem::TypeAlias(a) => a.source(db).ast.visibility(),
64 }; 66 };
65 let item = NameKind::AssocItem(item); 67 let kind = NameKind::AssocItem(item);
66 NameDefinition { item, container, visibility } 68 NameDefinition { kind, container, visibility }
67} 69}
68 70
69pub(super) fn from_struct_field(db: &RootDatabase, field: StructField) -> NameDefinition { 71pub(super) fn from_struct_field(db: &RootDatabase, field: StructField) -> NameDefinition {
70 let item = NameKind::Field(field); 72 let kind = NameKind::Field(field);
71 let parent = field.parent_def(db); 73 let parent = field.parent_def(db);
72 let container = parent.module(db); 74 let container = parent.module(db);
73 let visibility = match parent { 75 let visibility = match parent {
74 VariantDef::Struct(s) => s.source(db).ast.visibility(), 76 VariantDef::Struct(s) => s.source(db).ast.visibility(),
75 VariantDef::EnumVariant(e) => e.source(db).ast.parent_enum().visibility(), 77 VariantDef::EnumVariant(e) => e.source(db).ast.parent_enum().visibility(),
76 }; 78 };
77 NameDefinition { item, container, visibility } 79 NameDefinition { kind, container, visibility }
78} 80}
79 81
80pub(super) fn from_module_def( 82pub(super) fn from_module_def(
@@ -82,7 +84,7 @@ pub(super) fn from_module_def(
82 def: ModuleDef, 84 def: ModuleDef,
83 module: Option<Module>, 85 module: Option<Module>,
84) -> NameDefinition { 86) -> NameDefinition {
85 let item = NameKind::Def(def); 87 let kind = NameKind::Def(def);
86 let (container, visibility) = match def { 88 let (container, visibility) = match def {
87 ModuleDef::Module(it) => { 89 ModuleDef::Module(it) => {
88 let container = it.parent(db).or_else(|| Some(it)).unwrap(); 90 let container = it.parent(db).or_else(|| Some(it)).unwrap();
@@ -104,5 +106,5 @@ pub(super) fn from_module_def(
104 ModuleDef::Adt(Adt::Enum(it)) => (it.module(db), it.source(db).ast.visibility()), 106 ModuleDef::Adt(Adt::Enum(it)) => (it.module(db), it.source(db).ast.visibility()),
105 ModuleDef::BuiltinType(..) => (module.unwrap(), None), 107 ModuleDef::BuiltinType(..) => (module.unwrap(), None),
106 }; 108 };
107 NameDefinition { item, container, visibility } 109 NameDefinition { kind, container, visibility }
108} 110}