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