aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide_api/src/completion/complete_postfix.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_postfix.rs')
-rw-r--r--crates/ra_ide_api/src/completion/complete_postfix.rs82
1 files changed, 71 insertions, 11 deletions
diff --git a/crates/ra_ide_api/src/completion/complete_postfix.rs b/crates/ra_ide_api/src/completion/complete_postfix.rs
index 7042d8bff..a25e517f5 100644
--- a/crates/ra_ide_api/src/completion/complete_postfix.rs
+++ b/crates/ra_ide_api/src/completion/complete_postfix.rs
@@ -51,22 +51,82 @@ pub(super) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) {
51 51
52#[cfg(test)] 52#[cfg(test)]
53mod tests { 53mod tests {
54 use crate::completion::{check_completion, CompletionKind}; 54 use crate::completion::{do_completion, CompletionItem, CompletionKind};
55 use insta::assert_debug_snapshot_matches;
55 56
56 fn check_snippet_completion(test_name: &str, code: &str) { 57 fn do_postfix_completion(code: &str) -> Vec<CompletionItem> {
57 check_completion(test_name, code, CompletionKind::Postfix); 58 do_completion(code, CompletionKind::Postfix)
58 } 59 }
59 60
60 #[test] 61 #[test]
61 fn postfix_completion_works_for_trivial_path_expression() { 62 fn postfix_completion_works_for_trivial_path_expression() {
62 check_snippet_completion( 63 assert_debug_snapshot_matches!(
63 "postfix_completion_works_for_trivial_path_expression", 64 do_postfix_completion(
64 r#" 65 r#"
65 fn main() { 66 fn main() {
66 let bar = "a"; 67 let bar = "a";
67 bar.<|> 68 bar.<|>
68 } 69 }
69 "#, 70 "#,
71 ),
72 @r###"[
73 CompletionItem {
74 label: "box",
75 source_range: [88; 88),
76 delete: [84; 88),
77 insert: "Box::new(bar)",
78 detail: "Box::new(expr)",
79 },
80 CompletionItem {
81 label: "dbg",
82 source_range: [88; 88),
83 delete: [84; 88),
84 insert: "dbg!(bar)",
85 detail: "dbg!(expr)",
86 },
87 CompletionItem {
88 label: "if",
89 source_range: [88; 88),
90 delete: [84; 88),
91 insert: "if bar {$0}",
92 detail: "if expr {}",
93 },
94 CompletionItem {
95 label: "match",
96 source_range: [88; 88),
97 delete: [84; 88),
98 insert: "match bar {\n ${1:_} => {$0\\},\n}",
99 detail: "match expr {}",
100 },
101 CompletionItem {
102 label: "not",
103 source_range: [88; 88),
104 delete: [84; 88),
105 insert: "!bar",
106 detail: "!expr",
107 },
108 CompletionItem {
109 label: "ref",
110 source_range: [88; 88),
111 delete: [84; 88),
112 insert: "&bar",
113 detail: "&expr",
114 },
115 CompletionItem {
116 label: "refm",
117 source_range: [88; 88),
118 delete: [84; 88),
119 insert: "&mut bar",
120 detail: "&mut expr",
121 },
122 CompletionItem {
123 label: "while",
124 source_range: [88; 88),
125 delete: [84; 88),
126 insert: "while bar {\n$0\n}",
127 detail: "while expr {}",
128 },
129]"###
70 ); 130 );
71 } 131 }
72} 132}