diff options
Diffstat (limited to 'crates/ra_ide/src/completion/test_utils.rs')
-rw-r--r-- | crates/ra_ide/src/completion/test_utils.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/crates/ra_ide/src/completion/test_utils.rs b/crates/ra_ide/src/completion/test_utils.rs index bf22452a2..e9e89104e 100644 --- a/crates/ra_ide/src/completion/test_utils.rs +++ b/crates/ra_ide/src/completion/test_utils.rs | |||
@@ -5,6 +5,8 @@ use crate::{ | |||
5 | mock_analysis::{analysis_and_position, single_file_with_position}, | 5 | mock_analysis::{analysis_and_position, single_file_with_position}, |
6 | CompletionItem, | 6 | CompletionItem, |
7 | }; | 7 | }; |
8 | use hir::Semantics; | ||
9 | use ra_syntax::{AstNode, NodeOrToken, SyntaxElement, SyntaxToken}; | ||
8 | 10 | ||
9 | pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> { | 11 | pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec<CompletionItem> { |
10 | do_completion_with_options(code, kind, &CompletionConfig::default()) | 12 | do_completion_with_options(code, kind, &CompletionConfig::default()) |
@@ -27,3 +29,15 @@ pub(crate) fn do_completion_with_options( | |||
27 | kind_completions.sort_by_key(|c| c.label().to_owned()); | 29 | kind_completions.sort_by_key(|c| c.label().to_owned()); |
28 | kind_completions | 30 | kind_completions |
29 | } | 31 | } |
32 | |||
33 | pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { | ||
34 | let (analysis, pos) = single_file_with_position(code); | ||
35 | analysis | ||
36 | .with_db(|db| { | ||
37 | let sema = Semantics::new(db); | ||
38 | let original_file = sema.parse(pos.file_id); | ||
39 | let token = original_file.syntax().token_at_offset(pos.offset).left_biased().unwrap(); | ||
40 | assert!(check(NodeOrToken::Token(token))); | ||
41 | }) | ||
42 | .unwrap(); | ||
43 | } | ||