Skip to content

Commit edd450a

Browse files
add more completion about "impl"
1 parent dd2354c commit edd450a

File tree

6 files changed

+76
-22
lines changed

6 files changed

+76
-22
lines changed

crates/ide-completion/src/completions/item_list.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option
114114
add_keyword("trait", "trait $1 {\n $0\n}");
115115
if no_vis_qualifiers {
116116
add_keyword("impl", "impl $1 {\n $0\n}");
117+
add_keyword("impl for", "impl $1 for $2 {\n $0\n}");
118+
add_keyword("impl<> for <>", "impl<$4> $1 for $2<$3> {\n $0\n}");
117119
}
118120
}
119121

@@ -144,6 +146,8 @@ fn add_keywords(acc: &mut Completions, ctx: &CompletionContext<'_>, kind: Option
144146
add_keyword("use", "use $0");
145147
if no_vis_qualifiers {
146148
add_keyword("impl", "impl $1 {\n $0\n}");
149+
add_keyword("impl for", "impl $1 for $2 {\n $0\n}");
150+
add_keyword("impl<> for <>", "impl<$4> $1 for $2<$3> {\n $0\n}");
147151
}
148152
}
149153

crates/ide-completion/src/completions/keyword.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ mod tests {
5656
kw extern
5757
kw fn
5858
kw impl
59+
kw impl for
60+
kw impl<> for <>
5961
kw trait
6062
"#]],
6163
);

crates/ide-completion/src/tests/expression.rs

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ impl Unit {
171171
kw if
172172
kw if let
173173
kw impl
174+
kw impl for
175+
kw impl<> for <>
174176
kw let
175177
kw letm
176178
kw loop
@@ -236,8 +238,8 @@ fn complete_in_block() {
236238
}
237239
"#,
238240
expect![[r#"
239-
fn foo() fn()
240-
bt u32 u32
241+
fn foo() fn()
242+
bt u32 u32
241243
kw async
242244
kw const
243245
kw crate::
@@ -249,6 +251,8 @@ fn complete_in_block() {
249251
kw if
250252
kw if let
251253
kw impl
254+
kw impl for
255+
kw impl<> for <>
252256
kw let
253257
kw letm
254258
kw loop
@@ -285,8 +289,8 @@ fn complete_after_if_expr() {
285289
}
286290
"#,
287291
expect![[r#"
288-
fn foo() fn()
289-
bt u32 u32
292+
fn foo() fn()
293+
bt u32 u32
290294
kw async
291295
kw const
292296
kw crate::
@@ -300,6 +304,8 @@ fn complete_after_if_expr() {
300304
kw if
301305
kw if let
302306
kw impl
307+
kw impl for
308+
kw impl<> for <>
303309
kw let
304310
kw letm
305311
kw loop
@@ -360,8 +366,8 @@ fn completes_in_loop_ctx() {
360366
check(
361367
r"fn my() { loop { $0 } }",
362368
expect![[r#"
363-
fn my() fn()
364-
bt u32 u32
369+
fn my() fn()
370+
bt u32 u32
365371
kw async
366372
kw break
367373
kw const
@@ -375,6 +381,8 @@ fn completes_in_loop_ctx() {
375381
kw if
376382
kw if let
377383
kw impl
384+
kw impl for
385+
kw impl<> for <>
378386
kw let
379387
kw letm
380388
kw loop
@@ -946,8 +954,8 @@ fn else_completion_after_if() {
946954
fn foo() { if foo {} $0 }
947955
"#,
948956
expect![[r#"
949-
fn foo() fn()
950-
bt u32 u32
957+
fn foo() fn()
958+
bt u32 u32
951959
kw async
952960
kw const
953961
kw crate::
@@ -961,6 +969,8 @@ fn foo() { if foo {} $0 }
961969
kw if
962970
kw if let
963971
kw impl
972+
kw impl for
973+
kw impl<> for <>
964974
kw let
965975
kw letm
966976
kw loop
@@ -988,8 +998,8 @@ fn foo() { if foo {} $0 }
988998
fn foo() { if foo {} el$0 }
989999
"#,
9901000
expect![[r#"
991-
fn foo() fn()
992-
bt u32 u32
1001+
fn foo() fn()
1002+
bt u32 u32
9931003
kw async
9941004
kw const
9951005
kw crate::
@@ -1003,6 +1013,8 @@ fn foo() { if foo {} el$0 }
10031013
kw if
10041014
kw if let
10051015
kw impl
1016+
kw impl for
1017+
kw impl<> for <>
10061018
kw let
10071019
kw letm
10081020
kw loop
@@ -1080,8 +1092,8 @@ fn foo() { bar(if foo {} el$0) }
10801092
fn foo() { if foo {} $0 let x = 92; }
10811093
"#,
10821094
expect![[r#"
1083-
fn foo() fn()
1084-
bt u32 u32
1095+
fn foo() fn()
1096+
bt u32 u32
10851097
kw async
10861098
kw const
10871099
kw crate::
@@ -1095,6 +1107,8 @@ fn foo() { if foo {} $0 let x = 92; }
10951107
kw if
10961108
kw if let
10971109
kw impl
1110+
kw impl for
1111+
kw impl<> for <>
10981112
kw let
10991113
kw letm
11001114
kw loop
@@ -1122,8 +1136,8 @@ fn foo() { if foo {} $0 let x = 92; }
11221136
fn foo() { if foo {} el$0 let x = 92; }
11231137
"#,
11241138
expect![[r#"
1125-
fn foo() fn()
1126-
bt u32 u32
1139+
fn foo() fn()
1140+
bt u32 u32
11271141
kw async
11281142
kw const
11291143
kw crate::
@@ -1137,6 +1151,8 @@ fn foo() { if foo {} el$0 let x = 92; }
11371151
kw if
11381152
kw if let
11391153
kw impl
1154+
kw impl for
1155+
kw impl<> for <>
11401156
kw let
11411157
kw letm
11421158
kw loop
@@ -1164,8 +1180,8 @@ fn foo() { if foo {} el$0 let x = 92; }
11641180
fn foo() { if foo {} el$0 { let x = 92; } }
11651181
"#,
11661182
expect![[r#"
1167-
fn foo() fn()
1168-
bt u32 u32
1183+
fn foo() fn()
1184+
bt u32 u32
11691185
kw async
11701186
kw const
11711187
kw crate::
@@ -1179,6 +1195,8 @@ fn foo() { if foo {} el$0 { let x = 92; } }
11791195
kw if
11801196
kw if let
11811197
kw impl
1198+
kw impl for
1199+
kw impl<> for <>
11821200
kw let
11831201
kw letm
11841202
kw loop
@@ -1217,9 +1235,9 @@ fn main() {
12171235
pub struct UnstableThisShouldNotBeListed;
12181236
"#,
12191237
expect![[r#"
1220-
fn main() fn()
1238+
fn main() fn()
12211239
md std
1222-
bt u32 u32
1240+
bt u32 u32
12231241
kw async
12241242
kw const
12251243
kw crate::
@@ -1231,6 +1249,8 @@ pub struct UnstableThisShouldNotBeListed;
12311249
kw if
12321250
kw if let
12331251
kw impl
1252+
kw impl for
1253+
kw impl<> for <>
12341254
kw let
12351255
kw letm
12361256
kw loop
@@ -1285,6 +1305,8 @@ pub struct UnstableButWeAreOnNightlyAnyway;
12851305
kw if
12861306
kw if let
12871307
kw impl
1308+
kw impl for
1309+
kw impl<> for <>
12881310
kw let
12891311
kw letm
12901312
kw loop
@@ -1529,6 +1551,8 @@ fn main() {
15291551
kw if
15301552
kw if let
15311553
kw impl
1554+
kw impl for
1555+
kw impl<> for <>
15321556
kw let
15331557
kw letm
15341558
kw loop
@@ -1986,6 +2010,8 @@ fn bar() {
19862010
kw if
19872011
kw if let
19882012
kw impl
2013+
kw impl for
2014+
kw impl<> for <>
19892015
kw let
19902016
kw letm
19912017
kw loop
@@ -2044,9 +2070,9 @@ fn foo() {
20442070
}
20452071
"#,
20462072
expect![[r#"
2047-
fn foo() fn()
2073+
fn foo() fn()
20482074
md proc_macros
2049-
bt u32 u32
2075+
bt u32 u32
20502076
kw async
20512077
kw const
20522078
kw crate::
@@ -2058,6 +2084,8 @@ fn foo() {
20582084
kw if
20592085
kw if let
20602086
kw impl
2087+
kw impl for
2088+
kw impl<> for <>
20612089
kw let
20622090
kw letm
20632091
kw loop

crates/ide-completion/src/tests/item.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,8 @@ fn bar() {
284284
kw if
285285
kw if let
286286
kw impl
287+
kw impl for
288+
kw impl<> for <>
287289
kw let
288290
kw letm
289291
kw loop

crates/ide-completion/src/tests/item_list.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ fn in_mod_item_list() {
1616
kw extern
1717
kw fn
1818
kw impl
19+
kw impl for
20+
kw impl<> for <>
1921
kw mod
2022
kw pub
2123
kw pub(crate)
@@ -50,6 +52,8 @@ fn in_source_file_item_list() {
5052
kw extern
5153
kw fn
5254
kw impl
55+
kw impl for
56+
kw impl<> for <>
5357
kw mod
5458
kw pub
5559
kw pub(crate)
@@ -83,6 +87,8 @@ fn in_item_list_after_attr() {
8387
kw extern
8488
kw fn
8589
kw impl
90+
kw impl for
91+
kw impl<> for <>
8692
kw mod
8793
kw pub
8894
kw pub(crate)
@@ -122,6 +128,8 @@ fn after_unsafe_token() {
122128
kw extern
123129
kw fn
124130
kw impl
131+
kw impl for
132+
kw impl<> for <>
125133
kw trait
126134
"#]],
127135
);
@@ -385,6 +393,8 @@ fn after_unit_struct() {
385393
kw extern
386394
kw fn
387395
kw impl
396+
kw impl for
397+
kw impl<> for <>
388398
kw mod
389399
kw pub
390400
kw pub(crate)

crates/ide-completion/src/tests/special.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,8 @@ fn here_we_go() {
10081008
kw if
10091009
kw if let
10101010
kw impl
1011+
kw impl for
1012+
kw impl<> for <>
10111013
kw let
10121014
kw letm
10131015
kw loop
@@ -1059,6 +1061,8 @@ fn here_we_go() {
10591061
kw if
10601062
kw if let
10611063
kw impl
1064+
kw impl for
1065+
kw impl<> for <>
10621066
kw let
10631067
kw letm
10641068
kw loop
@@ -1184,6 +1188,8 @@ fn bar() { qu$0 }
11841188
kw if
11851189
kw if let
11861190
kw impl
1191+
kw impl for
1192+
kw impl<> for <>
11871193
kw let
11881194
kw letm
11891195
kw loop
@@ -1428,8 +1434,8 @@ fn foo() {
14281434
"#,
14291435
Some('_'),
14301436
expect![[r#"
1431-
fn foo() fn()
1432-
bt u32 u32
1437+
fn foo() fn()
1438+
bt u32 u32
14331439
kw async
14341440
kw const
14351441
kw crate::
@@ -1441,6 +1447,8 @@ fn foo() {
14411447
kw if
14421448
kw if let
14431449
kw impl
1450+
kw impl for
1451+
kw impl<> for <>
14441452
kw let
14451453
kw letm
14461454
kw loop

0 commit comments

Comments
 (0)