Unnamed repository; edit this file 'description' to name the repository.
Fix complete semicolon in array expression
Example --- ```rust fn foo() {} fn bar() { let _ = [fo$0]; } ``` **Before this PR** ```rust fn foo() {} fn bar() { let _ = [foo();$0]; } ``` **After this PR** ```rust fn foo() {} fn bar() { let _ = [foo()$0]; } ```
A4-Tacks 4 months ago
parent 0c061ee · commit a5811cc
-rw-r--r--crates/ide-completion/src/context.rs5
-rw-r--r--crates/ide-completion/src/render/function.rs19
2 files changed, 23 insertions, 1 deletions
diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs
index d116f665ad..7f3e69c8ab 100644
--- a/crates/ide-completion/src/context.rs
+++ b/crates/ide-completion/src/context.rs
@@ -821,7 +821,10 @@ impl<'db> CompletionContext<'db> {
CompleteSemicolon::DoNotComplete
} else if let Some(term_node) =
sema.token_ancestors_with_macros(token.clone()).find(|node| {
- matches!(node.kind(), BLOCK_EXPR | MATCH_ARM | CLOSURE_EXPR | ARG_LIST | PAREN_EXPR)
+ matches!(
+ node.kind(),
+ BLOCK_EXPR | MATCH_ARM | CLOSURE_EXPR | ARG_LIST | PAREN_EXPR | ARRAY_EXPR
+ )
})
{
let next_token = iter::successors(token.next_token(), |it| it.next_token())
diff --git a/crates/ide-completion/src/render/function.rs b/crates/ide-completion/src/render/function.rs
index 4713b1f1af..475e00dfcf 100644
--- a/crates/ide-completion/src/render/function.rs
+++ b/crates/ide-completion/src/render/function.rs
@@ -908,4 +908,23 @@ fn bar() {
"#,
);
}
+
+ #[test]
+ fn no_semicolon_in_array() {
+ check_edit(
+ r#"foo"#,
+ r#"
+fn foo() {}
+fn bar() {
+ let _ = [fo$0];
+}
+"#,
+ r#"
+fn foo() {}
+fn bar() {
+ let _ = [foo()$0];
+}
+"#,
+ );
+ }
}