Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #19279 from Natural-selection1/master
Improve keyword completion for 'let' and 'let mut'
Lukas Wirth 2025-03-05
parent 27dc614 · parent 3ef8a37 · commit 4552a34
-rw-r--r--crates/ide-completion/src/completions/expr.rs3
-rw-r--r--crates/ide-completion/src/completions/keyword.rs30
-rw-r--r--crates/ide-completion/src/tests/expression.rs14
-rw-r--r--crates/ide-completion/src/tests/item.rs1
-rw-r--r--crates/ide-completion/src/tests/special.rs4
5 files changed, 51 insertions, 1 deletions
diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs
index 365d2dde7e..b28b6e50e2 100644
--- a/crates/ide-completion/src/completions/expr.rs
+++ b/crates/ide-completion/src/completions/expr.rs
@@ -365,7 +365,8 @@ pub(crate) fn complete_expr_path(
add_keyword("false", "false");
if in_condition || in_block_expr {
- add_keyword("let", "let");
+ add_keyword("letm", "let mut $0");
+ add_keyword("let", "let $0");
}
if after_if_expr {
diff --git a/crates/ide-completion/src/completions/keyword.rs b/crates/ide-completion/src/completions/keyword.rs
index 6541ee502d..26c29e0202 100644
--- a/crates/ide-completion/src/completions/keyword.rs
+++ b/crates/ide-completion/src/completions/keyword.rs
@@ -330,4 +330,34 @@ fn main() {
",
)
}
+
+ #[test]
+ fn completes_let_with_space() {
+ check_edit(
+ "let",
+ r#"
+fn main() {
+ $0
+}
+"#,
+ r#"
+fn main() {
+ let $0
+}
+"#,
+ );
+ check_edit(
+ "letm",
+ r#"
+fn main() {
+ $0
+}
+"#,
+ r#"
+fn main() {
+ let mut $0
+}
+"#,
+ );
+ }
}
diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs
index 68218ae03f..9b3c676c48 100644
--- a/crates/ide-completion/src/tests/expression.rs
+++ b/crates/ide-completion/src/tests/expression.rs
@@ -170,6 +170,7 @@ impl Unit {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -247,6 +248,7 @@ fn complete_in_block() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -297,6 +299,7 @@ fn complete_after_if_expr() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -370,6 +373,7 @@ fn completes_in_loop_ctx() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -942,6 +946,7 @@ fn foo() { if foo {} $0 }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -983,6 +988,7 @@ fn foo() { if foo {} el$0 }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1072,6 +1078,7 @@ fn foo() { if foo {} $0 let x = 92; }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1113,6 +1120,7 @@ fn foo() { if foo {} el$0 let x = 92; }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1154,6 +1162,7 @@ fn foo() { if foo {} el$0 { let x = 92; } }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1205,6 +1214,7 @@ pub struct UnstableThisShouldNotBeListed;
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1258,6 +1268,7 @@ pub struct UnstableButWeAreOnNightlyAnyway;
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1495,6 +1506,7 @@ fn main() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1945,6 +1957,7 @@ fn bar() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -2016,6 +2029,7 @@ fn foo() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
diff --git a/crates/ide-completion/src/tests/item.rs b/crates/ide-completion/src/tests/item.rs
index bea6d60769..be2c37d101 100644
--- a/crates/ide-completion/src/tests/item.rs
+++ b/crates/ide-completion/src/tests/item.rs
@@ -285,6 +285,7 @@ fn bar() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs
index 2b05184bdb..005263d100 100644
--- a/crates/ide-completion/src/tests/special.rs
+++ b/crates/ide-completion/src/tests/special.rs
@@ -1009,6 +1009,7 @@ fn here_we_go() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1059,6 +1060,7 @@ fn here_we_go() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1182,6 +1184,7 @@ fn bar() { qu$0 }
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod
@@ -1437,6 +1440,7 @@ fn foo() {
kw if let
kw impl
kw let
+ kw letm
kw loop
kw match
kw mod