aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-01-25 17:55:29 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-01-25 17:55:29 +0000
commitcc73d3ccbc6bc066e7580ece0e64808c8c8056e7 (patch)
treedcb396d86fff5fe40c6360030706c2181dd6562e
parentdaaba4be17cae9ee32a2e151e256ef71f600814e (diff)
parent65885791165c42b48fa2deaed32c4f35c17c62f5 (diff)
Merge #646
646: Add module documentation support r=matklad a=kjeremy Co-authored-by: Jeremy A. Kolb <[email protected]>
-rw-r--r--crates/ra_hir/src/code_model_api.rs7
-rw-r--r--crates/ra_ide_api/src/completion/complete_path.rs16
-rw-r--r--crates/ra_ide_api/src/completion/completion_item.rs2
-rw-r--r--crates/ra_ide_api/src/completion/snapshots/completion_item__mod_with_docs.snap26
4 files changed, 50 insertions, 1 deletions
diff --git a/crates/ra_hir/src/code_model_api.rs b/crates/ra_hir/src/code_model_api.rs
index fdea5be57..1e88bff8b 100644
--- a/crates/ra_hir/src/code_model_api.rs
+++ b/crates/ra_hir/src/code_model_api.rs
@@ -177,6 +177,13 @@ impl Module {
177 } 177 }
178} 178}
179 179
180impl Docs for Module {
181 fn docs(&self, db: &impl HirDatabase) -> Option<Documentation> {
182 self.declaration_source(db)
183 .and_then(|it| docs_from_ast(&*it.1))
184 }
185}
186
180#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] 187#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
181pub struct StructField { 188pub struct StructField {
182 pub(crate) parent: VariantDef, 189 pub(crate) parent: VariantDef,
diff --git a/crates/ra_ide_api/src/completion/complete_path.rs b/crates/ra_ide_api/src/completion/complete_path.rs
index 172aedf95..b33ddcde5 100644
--- a/crates/ra_ide_api/src/completion/complete_path.rs
+++ b/crates/ra_ide_api/src/completion/complete_path.rs
@@ -66,6 +66,22 @@ mod tests {
66 } 66 }
67 67
68 #[test] 68 #[test]
69 fn completes_mod_with_docs() {
70 check_reference_completion(
71 "mod_with_docs",
72 r"
73 use self::my<|>;
74
75 /// Some simple
76 /// docs describing `mod my`.
77 mod my {
78 struct Bar;
79 }
80 ",
81 );
82 }
83
84 #[test]
69 fn completes_use_item_starting_with_self() { 85 fn completes_use_item_starting_with_self() {
70 check_reference_completion( 86 check_reference_completion(
71 "use_item_starting_with_self", 87 "use_item_starting_with_self",
diff --git a/crates/ra_ide_api/src/completion/completion_item.rs b/crates/ra_ide_api/src/completion/completion_item.rs
index b2b047766..b16ac2b28 100644
--- a/crates/ra_ide_api/src/completion/completion_item.rs
+++ b/crates/ra_ide_api/src/completion/completion_item.rs
@@ -215,7 +215,7 @@ impl Builder {
215 Some(it) => it, 215 Some(it) => it,
216 }; 216 };
217 let (kind, docs) = match def { 217 let (kind, docs) = match def {
218 hir::ModuleDef::Module(_) => (CompletionItemKind::Module, None), 218 hir::ModuleDef::Module(it) => (CompletionItemKind::Module, it.docs(ctx.db)),
219 hir::ModuleDef::Function(func) => return self.from_function(ctx, func), 219 hir::ModuleDef::Function(func) => return self.from_function(ctx, func),
220 hir::ModuleDef::Struct(it) => (CompletionItemKind::Struct, it.docs(ctx.db)), 220 hir::ModuleDef::Struct(it) => (CompletionItemKind::Struct, it.docs(ctx.db)),
221 hir::ModuleDef::Enum(it) => (CompletionItemKind::Enum, it.docs(ctx.db)), 221 hir::ModuleDef::Enum(it) => (CompletionItemKind::Enum, it.docs(ctx.db)),
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__mod_with_docs.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__mod_with_docs.snap
new file mode 100644
index 000000000..3db7119a7
--- /dev/null
+++ b/crates/ra_ide_api/src/completion/snapshots/completion_item__mod_with_docs.snap
@@ -0,0 +1,26 @@
1---
2created: "2019-01-25T17:49:28.949186500+00:00"
3creator: [email protected]
4expression: kind_completions
5source: crates/ra_ide_api/src/completion/completion_item.rs
6---
7[
8 CompletionItem {
9 completion_kind: Reference,
10 label: "my",
11 kind: Some(
12 Module
13 ),
14 detail: None,
15 documentation: Some(
16 Documentation(
17 "Some simple\ndocs describing `mod my`."
18 )
19 ),
20 lookup: None,
21 insert_text: None,
22 insert_text_format: PlainText,
23 source_range: [23; 25),
24 text_edit: None
25 }
26]