From 9df78ec4a4e41ca94b25f292aba90e266f104f02 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 29 Mar 2021 21:23:45 +0200 Subject: Properly resolve intra doc links in hover and goto_definition --- crates/ide_db/src/defs.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'crates/ide_db/src') diff --git a/crates/ide_db/src/defs.rs b/crates/ide_db/src/defs.rs index de0dc2a40..378bac7b2 100644 --- a/crates/ide_db/src/defs.rs +++ b/crates/ide_db/src/defs.rs @@ -79,6 +79,29 @@ impl Definition { }; Some(name) } + + pub fn docs(&self, db: &RootDatabase) -> Option { + match self { + Definition::Macro(it) => it.docs(db), + Definition::Field(it) => it.docs(db), + Definition::ModuleDef(def) => match def { + hir::ModuleDef::Module(it) => it.docs(db), + hir::ModuleDef::Function(it) => it.docs(db), + hir::ModuleDef::Adt(def) => match def { + hir::Adt::Struct(it) => it.docs(db), + hir::Adt::Union(it) => it.docs(db), + hir::Adt::Enum(it) => it.docs(db), + }, + hir::ModuleDef::Variant(it) => it.docs(db), + hir::ModuleDef::Const(it) => it.docs(db), + hir::ModuleDef::Static(it) => it.docs(db), + hir::ModuleDef::Trait(it) => it.docs(db), + hir::ModuleDef::TypeAlias(it) => it.docs(db), + hir::ModuleDef::BuiltinType(_) => None, + }, + _ => None, + } + } } #[derive(Debug)] -- cgit v1.2.3