1
1
//! Completion tests for pattern position.
2
2
use expect_test:: { expect, Expect } ;
3
3
4
- use crate :: tests:: { completion_list, BASE_ITEMS_FIXTURE } ;
4
+ use crate :: tests:: { check_edit , completion_list, BASE_ITEMS_FIXTURE } ;
5
5
6
6
fn check_empty ( ra_fixture : & str , expect : Expect ) {
7
7
let actual = completion_list ( ra_fixture) ;
@@ -127,15 +127,15 @@ fn foo() {
127
127
expect ! [ [ r#"
128
128
ct CONST
129
129
en Enum
130
- ma makro!(…) macro_rules! makro
130
+ ma makro!(…) macro_rules! makro
131
131
md module
132
132
st Record
133
133
st Tuple
134
134
st Unit
135
135
ev TupleV
136
- bn Record Record { field$1 }$0
137
- bn Tuple Tuple($1)$0
138
- bn TupleV TupleV($1)$0
136
+ bn Record {…} Record { field$1 }$0
137
+ bn Tuple(…) Tuple($1)$0
138
+ bn TupleV(…) TupleV($1)$0
139
139
kw mut
140
140
kw ref
141
141
"# ] ] ,
@@ -162,8 +162,9 @@ fn foo() {
162
162
st Tuple
163
163
st Unit
164
164
ev Variant
165
- bn Record Record { field$1 }$0
166
- bn Tuple Tuple($1)$0
165
+ bn Record {…} Record { field$1 }$0
166
+ bn Tuple(…) Tuple($1)$0
167
+ bn Variant Variant$0
167
168
kw mut
168
169
kw ref
169
170
"# ] ] ,
@@ -178,13 +179,13 @@ fn foo(a$0) {
178
179
}
179
180
"# ,
180
181
expect ! [ [ r#"
181
- ma makro!(…) macro_rules! makro
182
+ ma makro!(…) macro_rules! makro
182
183
md module
183
184
st Record
184
185
st Tuple
185
186
st Unit
186
- bn Record Record { field$1 }: Record$0
187
- bn Tuple Tuple($1): Tuple$0
187
+ bn Record {…} Record { field$1 }: Record$0
188
+ bn Tuple(…) Tuple($1): Tuple$0
188
189
kw mut
189
190
kw ref
190
191
"# ] ] ,
@@ -195,13 +196,13 @@ fn foo(a$0: Tuple) {
195
196
}
196
197
"# ,
197
198
expect ! [ [ r#"
198
- ma makro!(…) macro_rules! makro
199
+ ma makro!(…) macro_rules! makro
199
200
md module
200
201
st Record
201
202
st Tuple
202
203
st Unit
203
- bn Record Record { field$1 }$0
204
- bn Tuple Tuple($1)$0
204
+ bn Record {…} Record { field$1 }$0
205
+ bn Tuple(…) Tuple($1)$0
205
206
kw mut
206
207
kw ref
207
208
"# ] ] ,
@@ -243,6 +244,7 @@ fn foo() {
243
244
expect ! [ [ r#"
244
245
en E
245
246
ma m!(…) macro_rules! m
247
+ bn E::X E::X$0
246
248
kw mut
247
249
kw ref
248
250
"# ] ] ,
@@ -269,8 +271,8 @@ fn outer() {
269
271
st Invisible
270
272
st Record
271
273
st Tuple
272
- bn Record Record { field$1, .. }$0
273
- bn Tuple Tuple($1, ..)$0
274
+ bn Record {…} Record { field$1, .. }$0
275
+ bn Tuple(…) Tuple($1, ..)$0
274
276
kw mut
275
277
kw ref
276
278
"# ] ] ,
@@ -293,8 +295,8 @@ impl Foo {
293
295
expect ! [ [ r#"
294
296
sp Self
295
297
st Foo
296
- bn Foo Foo($1)$0
297
- bn Self Self($1)$0
298
+ bn Foo(…) Foo($1)$0
299
+ bn Self(…) Self($1)$0
298
300
kw mut
299
301
kw ref
300
302
"# ] ] ,
@@ -316,9 +318,9 @@ fn func() {
316
318
"# ,
317
319
expect ! [ [ r#"
318
320
ct ASSOC_CONST const ASSOC_CONST: ()
319
- ev RecordV {…} RecordV { field: u32 }
320
- ev TupleV(…) TupleV(u32)
321
- ev UnitV UnitV
321
+ bn RecordV {…} RecordV { field$1 }$0
322
+ bn TupleV(…) TupleV($1)$0
323
+ bn UnitV UnitV$0
322
324
"# ] ] ,
323
325
) ;
324
326
}
@@ -334,8 +336,8 @@ fn outer(Foo { bar: $0 }: Foo) {}
334
336
expect ! [ [ r#"
335
337
st Bar
336
338
st Foo
337
- bn Bar Bar($1)$0
338
- bn Foo Foo { bar$1 }$0
339
+ bn Bar(…) Bar($1)$0
340
+ bn Foo {…} Foo { bar$1 }$0
339
341
kw mut
340
342
kw ref
341
343
"# ] ] ,
@@ -368,8 +370,8 @@ fn foo($0) {}
368
370
expect ! [ [ r#"
369
371
st Bar
370
372
st Foo
371
- bn Bar Bar($1): Bar$0
372
- bn Foo Foo { bar$1 }: Foo$0
373
+ bn Bar(…) Bar($1): Bar$0
374
+ bn Foo {…} Foo { bar$1 }: Foo$0
373
375
kw mut
374
376
kw ref
375
377
"# ] ] ,
@@ -389,8 +391,8 @@ fn foo() {
389
391
expect ! [ [ r#"
390
392
st Bar
391
393
st Foo
392
- bn Bar Bar($1)$0
393
- bn Foo Foo { bar$1 }$0
394
+ bn Bar(…) Bar($1)$0
395
+ bn Foo {…} Foo { bar$1 }$0
394
396
kw mut
395
397
kw ref
396
398
"# ] ] ,
@@ -443,7 +445,7 @@ fn foo() {
443
445
}
444
446
"# ,
445
447
expect ! [ [ r#"
446
- ev TupleVariant TupleVariant
448
+ bn TupleVariant(…) TupleVariant($1)$0
447
449
"# ] ] ,
448
450
) ;
449
451
check_empty (
@@ -458,7 +460,86 @@ fn foo() {
458
460
}
459
461
"# ,
460
462
expect ! [ [ r#"
461
- ev RecordVariant RecordVariant
463
+ bn RecordVariant {…} RecordVariant { field$1 }$0
464
+ "# ] ] ,
465
+ ) ;
466
+ }
467
+
468
+ #[ test]
469
+ fn completes_enum_variant_pat ( ) {
470
+ cov_mark:: check!( enum_variant_pattern_path) ;
471
+ check_edit (
472
+ "RecordVariant {…}" ,
473
+ r#"
474
+ enum Enum {
475
+ RecordVariant { field: u32 }
476
+ }
477
+ fn foo() {
478
+ match (Enum::RecordVariant { field: 0 }) {
479
+ Enum::RecordV$0
480
+ }
481
+ }
482
+ "# ,
483
+ r#"
484
+ enum Enum {
485
+ RecordVariant { field: u32 }
486
+ }
487
+ fn foo() {
488
+ match (Enum::RecordVariant { field: 0 }) {
489
+ Enum::RecordVariant { field$1 }$0
490
+ }
491
+ }
492
+ "# ,
493
+ ) ;
494
+ }
495
+
496
+ #[ test]
497
+ fn completes_enum_variant_pat_escape ( ) {
498
+ cov_mark:: check!( enum_variant_pattern_path) ;
499
+ check_empty (
500
+ r#"
501
+ enum Enum {
502
+ A,
503
+ B { r#type: i32 },
504
+ r#type,
505
+ r#struct { r#type: i32 },
506
+ }
507
+ fn foo() {
508
+ match (Enum::A) {
509
+ $0
510
+ }
511
+ }
512
+ "# ,
513
+ expect ! [ [ r#"
514
+ en Enum
515
+ bn Enum::A Enum::A$0
516
+ bn Enum::B {…} Enum::B { r#type$1 }$0
517
+ bn Enum::struct {…} Enum::r#struct { r#type$1 }$0
518
+ bn Enum::type Enum::r#type$0
519
+ kw mut
520
+ kw ref
521
+ "# ] ] ,
522
+ ) ;
523
+
524
+ check_empty (
525
+ r#"
526
+ enum Enum {
527
+ A,
528
+ B { r#type: i32 },
529
+ r#type,
530
+ r#struct { r#type: i32 },
531
+ }
532
+ fn foo() {
533
+ match (Enum::A) {
534
+ Enum::$0
535
+ }
536
+ }
537
+ "# ,
538
+ expect ! [ [ r#"
539
+ bn A A$0
540
+ bn B {…} B { r#type$1 }$0
541
+ bn struct {…} r#struct { r#type$1 }$0
542
+ bn type r#type$0
462
543
"# ] ] ,
463
544
) ;
464
545
}
0 commit comments