diff options
author | Mikhail Rakhmanov <[email protected]> | 2020-06-12 19:30:57 +0100 |
---|---|---|
committer | Mikhail Rakhmanov <[email protected]> | 2020-06-12 19:30:57 +0100 |
commit | 357667104371d446cc029267e8095365c17ba085 (patch) | |
tree | 078b56f8e1fba04aad022880833a5d2c5ee858b7 /crates/ra_ide/src/completion/test_utils.rs | |
parent | 42a719ad255c62933f58c2b2a5e767fb3b3c5a26 (diff) |
Rewrite snapshot checks
Diffstat (limited to 'crates/ra_ide/src/completion/test_utils.rs')
-rw-r--r-- | crates/ra_ide/src/completion/test_utils.rs | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/crates/ra_ide/src/completion/test_utils.rs b/crates/ra_ide/src/completion/test_utils.rs index f439f974d..c660de7b1 100644 --- a/crates/ra_ide/src/completion/test_utils.rs +++ b/crates/ra_ide/src/completion/test_utils.rs | |||
@@ -3,7 +3,7 @@ | |||
3 | use crate::{ | 3 | use crate::{ |
4 | completion::{completion_item::CompletionKind, CompletionConfig}, | 4 | completion::{completion_item::CompletionKind, CompletionConfig}, |
5 | mock_analysis::{analysis_and_position, single_file_with_position}, | 5 | mock_analysis::{analysis_and_position, single_file_with_position}, |
6 | CompletionItem, FilePosition, | 6 | CompletionItem, |
7 | }; | 7 | }; |
8 | use hir::Semantics; | 8 | use hir::Semantics; |
9 | use ra_syntax::{AstNode, NodeOrToken, SyntaxElement}; | 9 | use ra_syntax::{AstNode, NodeOrToken, SyntaxElement}; |
@@ -12,11 +12,8 @@ pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionI | |||
12 | do_completion_with_options(code, kind, &CompletionConfig::default()) | 12 | do_completion_with_options(code, kind, &CompletionConfig::default()) |
13 | } | 13 | } |
14 | 14 | ||
15 | pub(crate) fn do_completion_with_position( | 15 | pub(crate) fn get_completions(code: &str, kind: CompletionKind) -> Vec<String> { |
16 | code: &str, | 16 | get_completions_with_options(code, kind, &CompletionConfig::default()) |
17 | kind: CompletionKind, | ||
18 | ) -> (FilePosition, Vec<CompletionItem>) { | ||
19 | do_completion_with_options_and_position(code, kind, &CompletionConfig::default()) | ||
20 | } | 17 | } |
21 | 18 | ||
22 | pub(crate) fn do_completion_with_options( | 19 | pub(crate) fn do_completion_with_options( |
@@ -24,25 +21,46 @@ pub(crate) fn do_completion_with_options( | |||
24 | kind: CompletionKind, | 21 | kind: CompletionKind, |
25 | options: &CompletionConfig, | 22 | options: &CompletionConfig, |
26 | ) -> Vec<CompletionItem> { | 23 | ) -> Vec<CompletionItem> { |
27 | do_completion_with_options_and_position(code, kind, options).1 | 24 | let mut kind_completions: Vec<CompletionItem> = get_all_completion_items(code, options) |
25 | .into_iter() | ||
26 | .filter(|c| c.completion_kind == kind) | ||
27 | .collect(); | ||
28 | kind_completions.sort_by_key(|c| c.label().to_owned()); | ||
29 | kind_completions | ||
28 | } | 30 | } |
29 | 31 | ||
30 | pub(crate) fn do_completion_with_options_and_position( | 32 | fn get_all_completion_items(code: &str, options: &CompletionConfig) -> Vec<CompletionItem> { |
31 | code: &str, | ||
32 | kind: CompletionKind, | ||
33 | options: &CompletionConfig, | ||
34 | ) -> (FilePosition, Vec<CompletionItem>) { | ||
35 | let (analysis, position) = if code.contains("//-") { | 33 | let (analysis, position) = if code.contains("//-") { |
36 | analysis_and_position(code) | 34 | analysis_and_position(code) |
37 | } else { | 35 | } else { |
38 | single_file_with_position(code) | 36 | single_file_with_position(code) |
39 | }; | 37 | }; |
40 | let completions = analysis.completions(options, position).unwrap().unwrap(); | 38 | analysis.completions(options, position).unwrap().unwrap().into() |
41 | let completion_items: Vec<CompletionItem> = completions.into(); | 39 | } |
42 | let mut kind_completions: Vec<CompletionItem> = | 40 | |
43 | completion_items.into_iter().filter(|c| c.completion_kind == kind).collect(); | 41 | pub(crate) fn get_all_completions(code: &str, options: &CompletionConfig) -> Vec<String> { |
42 | let mut kind_completions = get_all_completion_items(code, options); | ||
43 | kind_completions.sort_by_key(|c| c.label().to_owned()); | ||
44 | kind_completions | ||
45 | .into_iter() | ||
46 | .map(|it| format!("{} {}", it.kind().unwrap().tag(), it.label())) | ||
47 | .collect() | ||
48 | } | ||
49 | |||
50 | pub(crate) fn get_completions_with_options( | ||
51 | code: &str, | ||
52 | kind: CompletionKind, | ||
53 | options: &CompletionConfig, | ||
54 | ) -> Vec<String> { | ||
55 | let mut kind_completions: Vec<CompletionItem> = get_all_completion_items(code, options) | ||
56 | .into_iter() | ||
57 | .filter(|c| c.completion_kind == kind) | ||
58 | .collect(); | ||
44 | kind_completions.sort_by_key(|c| c.label().to_owned()); | 59 | kind_completions.sort_by_key(|c| c.label().to_owned()); |
45 | (position, kind_completions) | 60 | kind_completions |
61 | .into_iter() | ||
62 | .map(|it| format!("{} {}", it.kind().unwrap().tag(), it.label())) | ||
63 | .collect() | ||
46 | } | 64 | } |
47 | 65 | ||
48 | pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { | 66 | pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { |