use Source for module, part 2

This commit is contained in:
Aleksey Kladov 2019-06-11 17:48:27 +03:00
parent 0145d06515
commit dd63f17027
3 changed files with 8 additions and 8 deletions

View File

@ -210,11 +210,11 @@ pub fn definition_source(self, db: &(impl DefDatabase + AstDatabase)) -> Source<
pub fn declaration_source(
self,
db: &(impl DefDatabase + AstDatabase),
) -> Option<(HirFileId, TreeArc<ast::Module>)> {
) -> Option<Source<TreeArc<ast::Module>>> {
let def_map = db.crate_def_map(self.krate);
let decl = def_map[self.module_id].declaration?;
let ast = decl.to_node(db);
Some((decl.file_id(), ast))
Some((decl.file_id(), ast).into())
}
/// Returns the syntax of the last path segment corresponding to this import

View File

@ -71,7 +71,7 @@ pub(crate) fn documentation_query(
def: DocDef,
) -> Option<Documentation> {
match def {
DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.1),
DocDef::Module(it) => docs_from_ast(&*it.declaration_source(db)?.ast),
DocDef::StructField(it) => match it.source(db).ast {
FieldSource::Named(named) => docs_from_ast(&*named),
FieldSource::Pos(..) => return None,

View File

@ -149,15 +149,15 @@ pub(crate) fn from_module(db: &RootDatabase, module: hir::Module) -> NavigationT
pub(crate) fn from_module_to_decl(db: &RootDatabase, module: hir::Module) -> NavigationTarget {
let name = module.name(db).map(|it| it.to_string().into()).unwrap_or_default();
if let Some((file_id, source)) = module.declaration_source(db) {
let file_id = file_id.as_original_file();
if let Some(src) = module.declaration_source(db) {
let file_id = src.file_id.as_original_file();
return NavigationTarget::from_syntax(
file_id,
name,
None,
source.syntax(),
source.doc_comment_text(),
source.short_label(),
src.ast.syntax(),
src.ast.doc_comment_text(),
src.ast.short_label(),
);
}
NavigationTarget::from_module(db, module)