]> git.lizzy.rs Git - rust.git/commitdiff
simplify
authorLukas Wirth <lukastw97@gmail.com>
Thu, 27 May 2021 01:01:46 +0000 (03:01 +0200)
committerLukas Wirth <lukastw97@gmail.com>
Thu, 27 May 2021 01:15:48 +0000 (03:15 +0200)
crates/ide_completion/src/context.rs
crates/ide_completion/src/patterns.rs

index dfac8f29f49c19cf1402f1ead5d56ecf66cc06f8..5d15fde2fdfade267081d4a52d15ab33f0e9a9ad 100644 (file)
@@ -18,9 +18,8 @@
 use crate::{
     patterns::{
         for_is_prev2, has_bind_pat_parent, has_block_expr_parent, has_field_list_parent,
-        has_impl_as_prev_sibling, has_impl_parent, has_item_list_or_source_file_parent,
-        has_ref_parent, has_trait_as_prev_sibling, has_trait_parent, inside_impl_trait_block,
-        is_in_loop_body, is_match_arm, previous_token,
+        has_impl_parent, has_item_list_or_source_file_parent, has_prev_sibling, has_ref_parent,
+        has_trait_parent, inside_impl_trait_block, is_in_loop_body, is_match_arm, previous_token,
     },
     CompletionConfig,
 };
@@ -44,7 +43,7 @@ pub(crate) enum ImmediateLocation {
 }
 
 #[derive(Copy, Clone, Debug, PartialEq, Eq)]
-pub enum PrevSibling {
+pub(crate) enum PrevSibling {
     Trait,
     Impl,
 }
@@ -323,9 +322,9 @@ fn fill_keyword_patterns(&mut self, file_with_fake_ident: &SyntaxNode, offset: T
         self.previous_token = previous_token(syntax_element.clone());
         self.in_loop_body = is_in_loop_body(syntax_element.clone());
         self.is_match_arm = is_match_arm(syntax_element.clone());
-        if has_impl_as_prev_sibling(syntax_element.clone()) {
+        if has_prev_sibling(syntax_element.clone(), IMPL) {
             self.prev_sibling = Some(PrevSibling::Impl)
-        } else if has_trait_as_prev_sibling(syntax_element.clone()) {
+        } else if has_prev_sibling(syntax_element.clone(), TRAIT) {
             self.prev_sibling = Some(PrevSibling::Trait)
         }
 
index 8f0d76661678e54a7a50b34a3f6d6cd4ecc8f3d2..04f2c532b119d077ffc6f49dd5b02942c904825f 100644 (file)
@@ -4,7 +4,7 @@
     algo::non_trivia_sibling,
     ast::{self, LoopBodyOwner},
     match_ast, AstNode, Direction, NodeOrToken, SyntaxElement,
-    SyntaxKind::*,
+    SyntaxKind::{self, *},
     SyntaxNode, SyntaxToken, T,
 };
 
@@ -73,6 +73,7 @@ fn test_has_block_expr_parent() {
 pub(crate) fn has_bind_pat_parent(element: SyntaxElement) -> bool {
     element.ancestors().any(|it| it.kind() == IDENT_PAT)
 }
+
 #[test]
 fn test_has_bind_pat_parent() {
     check_pattern_is_applicable(r"fn my_fn(m$0) {}", has_bind_pat_parent);
@@ -133,20 +134,12 @@ fn test_for_is_prev2() {
     check_pattern_is_applicable(r"for i i$0", for_is_prev2);
 }
 
-pub(crate) fn has_trait_as_prev_sibling(element: SyntaxElement) -> bool {
-    previous_sibling_or_ancestor_sibling(element).filter(|it| it.kind() == TRAIT).is_some()
-}
-#[test]
-fn test_has_trait_as_prev_sibling() {
-    check_pattern_is_applicable(r"trait A w$0 {}", has_trait_as_prev_sibling);
-}
-
-pub(crate) fn has_impl_as_prev_sibling(element: SyntaxElement) -> bool {
-    previous_sibling_or_ancestor_sibling(element).filter(|it| it.kind() == IMPL).is_some()
+pub(crate) fn has_prev_sibling(element: SyntaxElement, kind: SyntaxKind) -> bool {
+    previous_sibling_or_ancestor_sibling(element).filter(|it| it.kind() == kind).is_some()
 }
 #[test]
 fn test_has_impl_as_prev_sibling() {
-    check_pattern_is_applicable(r"impl A w$0 {}", has_impl_as_prev_sibling);
+    check_pattern_is_applicable(r"impl A w$0 {}", |it| has_prev_sibling(it, IMPL));
 }
 
 pub(crate) fn is_in_loop_body(element: SyntaxElement) -> bool {