about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLukas Wirth <lukastw97@gmail.com>2025-03-05 14:14:41 +0000
committerGitHub <noreply@github.com>2025-03-05 14:14:41 +0000
commit363297dc531d8bc4b2207af7c29fa4e1761dd131 (patch)
tree3737cf0ff4721c2c9e82c348c93c2477e370a217
parentb9f5453d77e79e2a1b5d78029913fd579e5084cf (diff)
parent5421fba7469f0669dc61a822deaf34c9b404816a (diff)
downloadrust-363297dc531d8bc4b2207af7c29fa4e1761dd131.tar.gz
rust-363297dc531d8bc4b2207af7c29fa4e1761dd131.zip
Merge pull request #19279 from Natural-selection1/master
Improve keyword completion for 'let' and 'let mut'
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs3
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/completions/keyword.rs30
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs14
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs1
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs4
5 files changed, 51 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs
index 365d2dde7e9..b28b6e50e22 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/expr.rs
+++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/completions/keyword.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/keyword.rs
index 6541ee502d8..26c29e0202c 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/keyword.rs
+++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs
index 68218ae03fd..9b3c676c48a 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/expression.rs
+++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs
index bea6d60769c..be2c37d1016 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/item.rs
+++ b/src/tools/rust-analyzer/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/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs
index 2b05184bdbe..005263d100a 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/tests/special.rs
+++ b/src/tools/rust-analyzer/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