feat: render docs from aliased type when docs are missing

This commit is contained in:
Khanh Duong Quoc 2024-10-22 20:23:05 +09:00
parent 687b72c36a
commit 44e48d75dd
No known key found for this signature in database
GPG key ID: 68399C39885161F3
2 changed files with 166 additions and 1 deletions

View file

@ -179,7 +179,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