From 21d962f0ac7d0e6c680250440b56a639c1c25249 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Tue, 1 Dec 2020 15:38:06 +0300 Subject: Trigger .let postfix snippet in the middle of the block --- crates/completion/src/completions/postfix.rs | 35 ++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'crates/completion/src') diff --git a/crates/completion/src/completions/postfix.rs b/crates/completion/src/completions/postfix.rs index 1785794cc..c8ba63cd3 100644 --- a/crates/completion/src/completions/postfix.rs +++ b/crates/completion/src/completions/postfix.rs @@ -5,7 +5,7 @@ mod format_like; use ide_db::ty_filter::TryEnum; use syntax::{ ast::{self, AstNode, AstToken}, - SyntaxKind::BLOCK_EXPR, + SyntaxKind::{BLOCK_EXPR, EXPR_STMT}, TextRange, TextSize, }; use text_edit::TextEdit; @@ -221,9 +221,8 @@ pub(crate) fn complete_postfix(acc: &mut Completions, ctx: &CompletionContext) { ) .add_to(acc); - let parent_node = dot_receiver.syntax().parent().and_then(|p| p.parent()); - if let Some(parent) = parent_node { - if parent.kind() == BLOCK_EXPR { + if let Some(parent) = dot_receiver.syntax().parent().and_then(|p| p.parent()) { + if matches!(parent.kind(), BLOCK_EXPR | EXPR_STMT) { postfix_snippet( ctx, cap, @@ -389,6 +388,34 @@ fn main() { ) } + #[test] + fn let_middle_block() { + check( + r#" +fn main() { + baz.l<|> + res +} +"#, + expect![[r#" + sn box Box::new(expr) + sn call function(expr) + sn dbg dbg!(expr) + sn dbgr dbg!(&expr) + sn if if expr {} + sn let let + sn letm let mut + sn match match expr {} + sn not !expr + sn ok Ok(expr) + sn ref &expr + sn refm &mut expr + sn some Some(expr) + sn while while expr {} + "#]], + ); + } + #[test] fn option_iflet() { check_edit( -- cgit v1.2.3