diff options
author | Aleksey Kladov <[email protected]> | 2019-06-11 15:43:36 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-06-11 16:28:51 +0100 |
commit | 178d8e96b5c810f40e7dd282ab06bb25d1fc8a2a (patch) | |
tree | 6ce44285c249ef6a7f8803a3be2de579f97ba766 | |
parent | 8b94b429e5a76a0518b07111f8faf0dca7457948 (diff) |
use Source for StructField
-rw-r--r-- | crates/ra_assists/src/fill_match_arms.rs | 4 | ||||
-rw-r--r-- | crates/ra_hir/src/code_model.rs | 11 | ||||
-rw-r--r-- | crates/ra_hir/src/docs.rs | 2 | ||||
-rw-r--r-- | crates/ra_ide_api/src/display/navigation_target.rs | 6 | ||||
-rw-r--r-- | crates/ra_ide_api/src/hover.rs | 4 |
5 files changed, 17 insertions, 10 deletions
diff --git a/crates/ra_assists/src/fill_match_arms.rs b/crates/ra_assists/src/fill_match_arms.rs index 45e327cd4..0e08830d1 100644 --- a/crates/ra_assists/src/fill_match_arms.rs +++ b/crates/ra_assists/src/fill_match_arms.rs | |||
@@ -44,8 +44,8 @@ pub(crate) fn fill_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<As | |||
44 | .into_iter() | 44 | .into_iter() |
45 | .map(|field| { | 45 | .map(|field| { |
46 | let name = field.name(db).to_string(); | 46 | let name = field.name(db).to_string(); |
47 | let (_, source) = field.source(db); | 47 | let src = field.source(db); |
48 | match source { | 48 | match src.ast { |
49 | FieldSource::Named(_) => name, | 49 | FieldSource::Named(_) => name, |
50 | FieldSource::Pos(_) => "_".to_string(), | 50 | FieldSource::Pos(_) => "_".to_string(), |
51 | } | 51 | } |
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index adb61a804..4c121503e 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs | |||
@@ -346,13 +346,20 @@ pub enum FieldSource { | |||
346 | Pos(TreeArc<ast::PosFieldDef>), | 346 | Pos(TreeArc<ast::PosFieldDef>), |
347 | } | 347 | } |
348 | 348 | ||
349 | impl HasSource for StructField { | ||
350 | type Ast = FieldSource; | ||
351 | fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source<FieldSource> { | ||
352 | self.source_impl(db).into() | ||
353 | } | ||
354 | } | ||
355 | |||
349 | impl StructField { | 356 | impl StructField { |
350 | pub fn name(&self, db: &impl HirDatabase) -> Name { | 357 | pub fn name(&self, db: &impl HirDatabase) -> Name { |
351 | self.parent.variant_data(db).fields().unwrap()[self.id].name.clone() | 358 | self.parent.variant_data(db).fields().unwrap()[self.id].name.clone() |
352 | } | 359 | } |
353 | 360 | ||
354 | pub fn source(&self, db: &(impl DefDatabase + AstDatabase)) -> (HirFileId, FieldSource) { | 361 | pub fn source(&self, db: &(impl DefDatabase + AstDatabase)) -> Source<FieldSource> { |
355 | self.source_impl(db) | 362 | self.source_impl(db).into() |
356 | } | 363 | } |
357 | 364 | ||
358 | pub fn ty(&self, db: &impl HirDatabase) -> Ty { | 365 | pub fn ty(&self, db: &impl HirDatabase) -> Ty { |
diff --git a/crates/ra_hir/src/docs.rs b/crates/ra_hir/src/docs.rs index cbf7ae10b..ae82d55a5 100644 --- a/crates/ra_hir/src/docs.rs +++ b/crates/ra_hir/src/docs.rs | |||
@@ -72,7 +72,7 @@ pub(crate) fn documentation_query( | |||
72 | ) -> Option<Documentation> { | 72 | ) -> Option<Documentation> { |
73 | match def { | 73 | match def { |
74 | DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.1), | 74 | DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.1), |
75 | DocDef::StructField(it) => match it.source(db).1 { | 75 | DocDef::StructField(it) => match it.source(db).ast { |
76 | FieldSource::Named(named) => docs_from_ast(&*named), | 76 | FieldSource::Named(named) => docs_from_ast(&*named), |
77 | FieldSource::Pos(..) => return None, | 77 | FieldSource::Pos(..) => return None, |
78 | }, | 78 | }, |
diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs index e5e1aa011..efba122b1 100644 --- a/crates/ra_ide_api/src/display/navigation_target.rs +++ b/crates/ra_ide_api/src/display/navigation_target.rs | |||
@@ -168,9 +168,9 @@ impl NavigationTarget { | |||
168 | } | 168 | } |
169 | 169 | ||
170 | pub(crate) fn from_field(db: &RootDatabase, field: hir::StructField) -> NavigationTarget { | 170 | pub(crate) fn from_field(db: &RootDatabase, field: hir::StructField) -> NavigationTarget { |
171 | let (file_id, field) = field.source(db); | 171 | let src = field.source(db); |
172 | let file_id = file_id.original_file(db); | 172 | let file_id = src.file_id.original_file(db); |
173 | match field { | 173 | match src.ast { |
174 | FieldSource::Named(it) => { | 174 | FieldSource::Named(it) => { |
175 | NavigationTarget::from_named(file_id, &*it, it.doc_comment_text(), it.short_label()) | 175 | NavigationTarget::from_named(file_id, &*it, it.doc_comment_text(), it.short_label()) |
176 | } | 176 | } |
diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs index 72328a72b..e43c1d8e5 100644 --- a/crates/ra_ide_api/src/hover.rs +++ b/crates/ra_ide_api/src/hover.rs | |||
@@ -102,8 +102,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option<RangeIn | |||
102 | res.extend(hover_text(src.ast.doc_comment_text(), None)); | 102 | res.extend(hover_text(src.ast.doc_comment_text(), None)); |
103 | } | 103 | } |
104 | Some(FieldAccess(it)) => { | 104 | Some(FieldAccess(it)) => { |
105 | let it = it.source(db).1; | 105 | let src = it.source(db); |
106 | if let hir::FieldSource::Named(it) = it { | 106 | if let hir::FieldSource::Named(it) = src.ast { |
107 | res.extend(hover_text(it.doc_comment_text(), it.short_label())); | 107 | res.extend(hover_text(it.doc_comment_text(), it.short_label())); |
108 | } | 108 | } |
109 | } | 109 | } |