Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/defs.rs')
-rw-r--r--crates/ide-db/src/defs.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/ide-db/src/defs.rs b/crates/ide-db/src/defs.rs
index a253e086f8..bc291e966b 100644
--- a/crates/ide-db/src/defs.rs
+++ b/crates/ide-db/src/defs.rs
@@ -178,7 +178,19 @@ impl Definition {
Definition::Static(it) => it.docs(db),
Definition::Trait(it) => it.docs(db),
Definition::TraitAlias(it) => it.docs(db),
- Definition::TypeAlias(it) => it.docs(db),
+ Definition::TypeAlias(it) => {
+ it.docs(db).or_else(|| {
+ // docs are missing, try to fall back to the docs of the aliased item.
+ let adt = it.ty(db).as_adt()?;
+ let docs = adt.docs(db)?;
+ let docs = format!(
+ "*This is the documentation for* `{}`\n\n{}",
+ adt.display(db, edition),
+ docs.as_str()
+ );
+ Some(Documentation::new(docs))
+ })
+ }
Definition::BuiltinType(it) => {
famous_defs.and_then(|fd| {
// std exposes prim_{} modules with docstrings on the root to document the builtins