diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 5b56f890e4d..adb61a80403 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -1003,12 +1003,17 @@ pub struct MacroDef { pub(crate) id: MacroDefId, } +impl HasSource for MacroDef { + type Ast = TreeArc; + + fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + (self.id.0.file_id(), self.id.0.to_node(db)).into() + } +} + impl MacroDef { - pub fn source( - &self, - db: &(impl DefDatabase + AstDatabase), - ) -> (HirFileId, TreeArc) { - (self.id.0.file_id(), self.id.0.to_node(db)) + pub fn source(&self, db: &(impl DefDatabase + AstDatabase)) -> Source> { + (self.id.0.file_id(), self.id.0.to_node(db)).into() } } diff --git a/crates/ra_hir/src/docs.rs b/crates/ra_hir/src/docs.rs index f736f38751e..cbf7ae10b6d 100644 --- a/crates/ra_hir/src/docs.rs +++ b/crates/ra_hir/src/docs.rs @@ -85,7 +85,7 @@ pub(crate) fn documentation_query( DocDef::Union(it) => docs_from_ast(&*it.source(db).ast), DocDef::Trait(it) => docs_from_ast(&*it.source(db).ast), DocDef::TypeAlias(it) => docs_from_ast(&*it.source(db).ast), - DocDef::MacroDef(it) => docs_from_ast(&*it.source(db).1), + DocDef::MacroDef(it) => docs_from_ast(&*it.source(db).ast), } } diff --git a/crates/ra_ide_api/src/display/navigation_target.rs b/crates/ra_ide_api/src/display/navigation_target.rs index 640d6854441..e5e1aa01139 100644 --- a/crates/ra_ide_api/src/display/navigation_target.rs +++ b/crates/ra_ide_api/src/display/navigation_target.rs @@ -248,12 +248,12 @@ impl NavigationTarget { } pub(crate) fn from_macro_def(db: &RootDatabase, macro_call: hir::MacroDef) -> NavigationTarget { - let (file_id, node) = macro_call.source(db); - log::debug!("nav target {}", node.syntax().debug_dump()); + let src = macro_call.source(db); + log::debug!("nav target {}", src.ast.syntax().debug_dump()); NavigationTarget::from_named( - file_id.original_file(db), - &*node, - node.doc_comment_text(), + src.file_id.original_file(db), + &*src.ast, + src.ast.doc_comment_text(), None, ) } diff --git a/crates/ra_ide_api/src/hover.rs b/crates/ra_ide_api/src/hover.rs index c4004435cc4..72328a72bcc 100644 --- a/crates/ra_ide_api/src/hover.rs +++ b/crates/ra_ide_api/src/hover.rs @@ -98,8 +98,8 @@ pub(crate) fn hover(db: &RootDatabase, position: FilePosition) -> Option res.extend(from_def_source(db, it)), Some(Macro(it)) => { - let it = it.source(db).1; - res.extend(hover_text(it.doc_comment_text(), None)); + let src = it.source(db); + res.extend(hover_text(src.ast.doc_comment_text(), None)); } Some(FieldAccess(it)) => { let it = it.source(db).1;