diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/complete_postfix.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/complete_postfix.rs | 82 |
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)] |
53 | mod tests { | 53 | mod 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 | } |