aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/ra_assists/src/fill_match_arms.rs4
-rw-r--r--crates/ra_hir/src/code_model.rs11
-rw-r--r--crates/ra_hir/src/docs.rs2
-rw-r--r--crates/ra_ide_api/src/display/navigation_target.rs6
-rw-r--r--crates/ra_ide_api/src/hover.rs4
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
349impl 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
349impl StructField { 356impl 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 }