Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #19447 from Natural-selection1/add_impl_for
add more completion about "impl"
Lukas Wirth 2025-04-05
parent 1d1771c · parent e3ec433 · commit bec5459
-rw-r--r--crates/ide-completion/src/completions/item_list.rs2
-rw-r--r--crates/ide-completion/src/completions/keyword.rs1
-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/item_list.rs5
-rw-r--r--crates/ide-completion/src/tests/special.rs4
6 files changed, 27 insertions, 0 deletions
diff --git a/crates/ide-completion/src/completions/item_list.rs b/crates/ide-completion/src/completions/item_list.rs
index 4ae00ccd81..58e7f584ed 100644
--- a/crates/ide-completion/src/completions/item_list.rs
+++ b/crates/ide-completion/src/completions/item_list.rs
@@ -114,6 +114,7 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option
add_keyword("trait", "trait $1 {\n $0\n}");
if no_vis_qualifiers {
add_keyword("impl", "impl $1 {\n $0\n}");
+ add_keyword("impl for", "impl $1 for $2 {\n $0\n}");
}
}
@@ -144,6 +145,7 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option
add_keyword("use", "use $0");
if no_vis_qualifiers {
add_keyword("impl", "impl $1 {\n $0\n}");
+ add_keyword("impl for", "impl $1 for $2 {\n $0\n}");
}
}
diff --git a/crates/ide-completion/src/completions/keyword.rs b/crates/ide-completion/src/completions/keyword.rs
index 14b0d543ca..039742463c 100644
--- a/crates/ide-completion/src/completions/keyword.rs
+++ b/crates/ide-completion/src/completions/keyword.rs
@@ -56,6 +56,7 @@ mod tests {
kw extern
kw fn
kw impl
+ kw impl for
kw trait
"#]],
);
diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs
index 98da2cbf07..b30ac43bf8 100644
--- a/crates/ide-completion/src/tests/expression.rs
+++ b/crates/ide-completion/src/tests/expression.rs
@@ -171,6 +171,7 @@ impl Unit {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -249,6 +250,7 @@ fn complete_in_block() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -300,6 +302,7 @@ fn complete_after_if_expr() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -375,6 +378,7 @@ fn completes_in_loop_ctx() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -961,6 +965,7 @@ fn foo() { if foo {} $0 }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1003,6 +1008,7 @@ fn foo() { if foo {} el$0 }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1095,6 +1101,7 @@ fn foo() { if foo {} $0 let x = 92; }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1137,6 +1144,7 @@ fn foo() { if foo {} el$0 let x = 92; }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1179,6 +1187,7 @@ fn foo() { if foo {} el$0 { let x = 92; } }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1231,6 +1240,7 @@ pub struct UnstableThisShouldNotBeListed;
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1285,6 +1295,7 @@ pub struct UnstableButWeAreOnNightlyAnyway;
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1529,6 +1540,7 @@ fn main() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -2001,6 +2013,7 @@ fn bar() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -2073,6 +2086,7 @@ fn foo() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
diff --git a/crates/ide-completion/src/tests/item.rs b/crates/ide-completion/src/tests/item.rs
index be2c37d101..55689034fb 100644
--- a/crates/ide-completion/src/tests/item.rs
+++ b/crates/ide-completion/src/tests/item.rs
@@ -284,6 +284,7 @@ fn bar() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
diff --git a/crates/ide-completion/src/tests/item_list.rs b/crates/ide-completion/src/tests/item_list.rs
index 841c42123a..fcdf10c856 100644
--- a/crates/ide-completion/src/tests/item_list.rs
+++ b/crates/ide-completion/src/tests/item_list.rs
@@ -16,6 +16,7 @@ fn in_mod_item_list() {
kw extern
kw fn
kw impl
+ kw impl for
kw mod
kw pub
kw pub(crate)
@@ -50,6 +51,7 @@ fn in_source_file_item_list() {
kw extern
kw fn
kw impl
+ kw impl for
kw mod
kw pub
kw pub(crate)
@@ -83,6 +85,7 @@ fn in_item_list_after_attr() {
kw extern
kw fn
kw impl
+ kw impl for
kw mod
kw pub
kw pub(crate)
@@ -122,6 +125,7 @@ fn after_unsafe_token() {
kw extern
kw fn
kw impl
+ kw impl for
kw trait
"#]],
);
@@ -385,6 +389,7 @@ fn after_unit_struct() {
kw extern
kw fn
kw impl
+ kw impl for
kw mod
kw pub
kw pub(crate)
diff --git a/crates/ide-completion/src/tests/special.rs b/crates/ide-completion/src/tests/special.rs
index 70caeac95b..15518e9837 100644
--- a/crates/ide-completion/src/tests/special.rs
+++ b/crates/ide-completion/src/tests/special.rs
@@ -1008,6 +1008,7 @@ fn here_we_go() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1059,6 +1060,7 @@ fn here_we_go() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1184,6 +1186,7 @@ fn bar() { qu$0 }
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop
@@ -1441,6 +1444,7 @@ fn foo() {
kw if
kw if let
kw impl
+ kw impl for
kw let
kw letm
kw loop