diff options
author | Ekaterina Babshukova <[email protected]> | 2019-10-14 12:59:02 +0100 |
---|---|---|
committer | Ekaterina Babshukova <[email protected]> | 2019-10-22 21:47:31 +0100 |
commit | 88ff88d3189de9dd9b0d88bdda3da769254c2b8e (patch) | |
tree | 080616bb7e00e028e8d561c828e48eb51956b635 /crates/ra_ide_api/src/references/name_definition.rs | |
parent | 19fbf2c16b5c1f39e23c720a2655cfdb49c25135 (diff) |
use Lazy, some fixes
Diffstat (limited to 'crates/ra_ide_api/src/references/name_definition.rs')
-rw-r--r-- | crates/ra_ide_api/src/references/name_definition.rs | 20 |
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 | |||
1 | use hir::{ | 3 | use 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 { | |||
22 | pub(crate) struct NameDefinition { | 24 | pub(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 | ||
28 | pub(super) fn from_pat( | 30 | pub(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 | ||
58 | pub(super) fn from_assoc_item(db: &RootDatabase, item: AssocItem) -> NameDefinition { | 60 | pub(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 | ||
69 | pub(super) fn from_struct_field(db: &RootDatabase, field: StructField) -> NameDefinition { | 71 | pub(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 | ||
80 | pub(super) fn from_module_def( | 82 | pub(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 | } |