aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/docs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/docs.rs')
-rw-r--r--crates/ra_hir/src/docs.rs71
1 files changed, 70 insertions, 1 deletions
diff --git a/crates/ra_hir/src/docs.rs b/crates/ra_hir/src/docs.rs
index 5db72c08a..c2279fe95 100644
--- a/crates/ra_hir/src/docs.rs
+++ b/crates/ra_hir/src/docs.rs
@@ -1,6 +1,6 @@
1use ra_syntax::ast; 1use ra_syntax::ast;
2 2
3use crate::HirDatabase; 3use crate::{HirDatabase, Module, StructField, Struct, Enum, EnumVariant, Static, Const, Function, Union};
4 4
5/// Holds documentation 5/// Holds documentation
6#[derive(Debug, Clone)] 6#[derive(Debug, Clone)]
@@ -29,3 +29,72 @@ pub trait Docs {
29pub(crate) fn docs_from_ast(node: &impl ast::DocCommentsOwner) -> Option<Documentation> { 29pub(crate) fn docs_from_ast(node: &impl ast::DocCommentsOwner) -> Option<Documentation> {
30 node.doc_comment_text().map(|it| Documentation::new(&it)) 30 node.doc_comment_text().map(|it| Documentation::new(&it))
31} 31}
32
33impl Docs for Module {
34 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
35 self.declaration_source(db).and_then(|it| docs_from_ast(&*it.1))
36 }
37}
38
39impl Docs for StructField {
40 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
41 match self.source(db).1 {
42 FieldSource::Named(named) => docs_from_ast(&*named),
43 FieldSource::Pos(..) => return None,
44 }
45 }
46}
47
48impl Docs for Struct {
49 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
50 docs_from_ast(&*self.source(db).1)
51 }
52}
53
54impl Docs for Union {
55 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
56 docs_from_ast(&*self.source(db).1)
57 }
58}
59
60impl Docs for Enum {
61 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
62 docs_from_ast(&*self.source(db).1)
63 }
64}
65
66impl Docs for EnumVariant {
67 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
68 docs_from_ast(&*self.source(db).1)
69 }
70}
71
72impl Docs for Function {
73 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
74 docs_from_ast(&*self.source(db).1)
75 }
76}
77
78impl Docs for Const {
79 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
80 docs_from_ast(&*self.source(db).1)
81 }
82}
83
84impl Docs for Static {
85 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
86 docs_from_ast(&*self.source(db).1)
87 }
88}
89
90impl Docs for Trait {
91 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
92 docs_from_ast(&*self.source(db).1)
93 }
94}
95
96impl Docs for TypeAlias {
97 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
98 docs_from_ast(&*self.source(db).1)
99 }
100}