Move docs to dedicated module

This commit is contained in:
Aleksey Kladov 2019-06-08 13:51:18 +03:00
parent 2a6b363b44
commit 5dc2789895
2 changed files with 70 additions and 69 deletions

View file

@ -1,6 +1,6 @@
use ra_syntax::ast;
use crate::HirDatabase;
use crate::{HirDatabase, Module, StructField, Struct, Enum, EnumVariant, Static, Const, Function, Union};
/// Holds documentation
#[derive(Debug, Clone)]
@ -29,3 +29,72 @@ pub trait Docs {
pub(crate) fn docs_from_ast(node: &impl ast::DocCommentsOwner) -> Option<Documentation> {
node.doc_comment_text().map(|it| Documentation::new(&it))
}
impl Docs for Module {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
self.declaration_source(db).and_then(|it| docs_from_ast(&*it.1))
}
}
impl Docs for StructField {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
match self.source(db).1 {
FieldSource::Named(named) => docs_from_ast(&*named),
FieldSource::Pos(..) => return None,
}
}
}
impl Docs for Struct {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Union {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Enum {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for EnumVariant {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Function {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Const {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Static {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for Trait {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}
impl Docs for TypeAlias {
fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
docs_from_ast(&*self.source(db).1)
}
}