diff options
author | Aleksey Kladov <[email protected]> | 2019-06-08 11:51:18 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-06-08 11:53:14 +0100 |
commit | 5dc27898959d2330b0822d95a9ee2488e687895a (patch) | |
tree | 546680fa805ab2926106ec4ce2f35ae12831e135 /crates/ra_hir/src/docs.rs | |
parent | 2a6b363b44e335af5f26ac503461ef15cca82ace (diff) |
Move docs to dedicated module
Diffstat (limited to 'crates/ra_hir/src/docs.rs')
-rw-r--r-- | crates/ra_hir/src/docs.rs | 71 |
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 @@ | |||
1 | use ra_syntax::ast; | 1 | use ra_syntax::ast; |
2 | 2 | ||
3 | use crate::HirDatabase; | 3 | use 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 { | |||
29 | pub(crate) fn docs_from_ast(node: &impl ast::DocCommentsOwner) -> Option<Documentation> { | 29 | pub(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 | |||
33 | impl 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 | |||
39 | impl 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 | |||
48 | impl Docs for Struct { | ||
49 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
50 | docs_from_ast(&*self.source(db).1) | ||
51 | } | ||
52 | } | ||
53 | |||
54 | impl Docs for Union { | ||
55 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
56 | docs_from_ast(&*self.source(db).1) | ||
57 | } | ||
58 | } | ||
59 | |||
60 | impl Docs for Enum { | ||
61 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
62 | docs_from_ast(&*self.source(db).1) | ||
63 | } | ||
64 | } | ||
65 | |||
66 | impl Docs for EnumVariant { | ||
67 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
68 | docs_from_ast(&*self.source(db).1) | ||
69 | } | ||
70 | } | ||
71 | |||
72 | impl Docs for Function { | ||
73 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
74 | docs_from_ast(&*self.source(db).1) | ||
75 | } | ||
76 | } | ||
77 | |||
78 | impl Docs for Const { | ||
79 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
80 | docs_from_ast(&*self.source(db).1) | ||
81 | } | ||
82 | } | ||
83 | |||
84 | impl Docs for Static { | ||
85 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
86 | docs_from_ast(&*self.source(db).1) | ||
87 | } | ||
88 | } | ||
89 | |||
90 | impl Docs for Trait { | ||
91 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
92 | docs_from_ast(&*self.source(db).1) | ||
93 | } | ||
94 | } | ||
95 | |||
96 | impl Docs for TypeAlias { | ||
97 | fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> { | ||
98 | docs_from_ast(&*self.source(db).1) | ||
99 | } | ||
100 | } | ||