From a2b4385f161134955fd729087f142d54c3a5e035 Mon Sep 17 00:00:00 2001 From: Mikhail Rakhmanov Date: Fri, 12 Jun 2020 00:17:30 +0200 Subject: Add few smoke tests for patterns and refactoring --- crates/ra_ide/src/completion/test_utils.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'crates/ra_ide/src/completion/test_utils.rs') 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::{ mock_analysis::{analysis_and_position, single_file_with_position}, CompletionItem, }; +use hir::Semantics; +use ra_syntax::{AstNode, NodeOrToken, SyntaxElement, SyntaxToken}; pub(crate) fn do_completion(code: &str, kind: CompletionKind) -> Vec { do_completion_with_options(code, kind, &CompletionConfig::default()) @@ -27,3 +29,15 @@ pub(crate) fn do_completion_with_options( kind_completions.sort_by_key(|c| c.label().to_owned()); kind_completions } + +pub(crate) fn check_pattern_is_applicable(code: &str, check: fn(SyntaxElement) -> bool) { + let (analysis, pos) = single_file_with_position(code); + analysis + .with_db(|db| { + let sema = Semantics::new(db); + let original_file = sema.parse(pos.file_id); + let token = original_file.syntax().token_at_offset(pos.offset).left_biased().unwrap(); + assert!(check(NodeOrToken::Token(token))); + }) + .unwrap(); +} -- cgit v1.2.3