|
3 | 3 |
|
4 | 4 | #![feature(generators, generator_trait, untagged_unions)]
|
5 | 5 | #![feature(move_ref_pattern)]
|
| 6 | +#![feature(bindings_after_at)] |
6 | 7 |
|
7 | 8 | #![allow(unused_assignments)]
|
8 | 9 | #![allow(unused_variables)]
|
@@ -291,6 +292,44 @@ fn subslice_mixed_min_lengths(a: &Allocator, c: i32) {
|
291 | 292 | }
|
292 | 293 | }
|
293 | 294 |
|
| 295 | +fn bindings_after_at_dynamic_init_move(a: &Allocator, c: bool) { |
| 296 | + let foo = if c { Some(a.alloc()) } else { None }; |
| 297 | + let _x; |
| 298 | + |
| 299 | + if let bar @ Some(_) = foo { |
| 300 | + _x = bar; |
| 301 | + } |
| 302 | +} |
| 303 | + |
| 304 | +fn bindings_after_at_dynamic_init_ref(a: &Allocator, c: bool) { |
| 305 | + let foo = if c { Some(a.alloc()) } else { None }; |
| 306 | + let _x; |
| 307 | + |
| 308 | + if let bar @ Some(_baz) = &foo { |
| 309 | + _x = bar; |
| 310 | + } |
| 311 | +} |
| 312 | + |
| 313 | +fn bindings_after_at_dynamic_drop_move(a: &Allocator, c: bool) { |
| 314 | + let foo = if c { Some(a.alloc()) } else { None }; |
| 315 | + |
| 316 | + if let bar @ Some(_) = foo { |
| 317 | + bar |
| 318 | + } else { |
| 319 | + None |
| 320 | + }; |
| 321 | +} |
| 322 | + |
| 323 | +fn bindings_after_at_dynamic_drop_ref(a: &Allocator, c: bool) { |
| 324 | + let foo = if c { Some(a.alloc()) } else { None }; |
| 325 | + |
| 326 | + if let bar @ Some(_baz) = &foo { |
| 327 | + bar |
| 328 | + } else { |
| 329 | + &None |
| 330 | + }; |
| 331 | +} |
| 332 | + |
294 | 333 | fn move_ref_pattern(a: &Allocator) {
|
295 | 334 | let mut tup = (a.alloc(), a.alloc(), a.alloc(), a.alloc());
|
296 | 335 | let (ref _a, ref mut _b, _c, mut _d) = tup;
|
@@ -471,5 +510,14 @@ fn main() {
|
471 | 510 | run_test(|a| panic_after_init_temp(a));
|
472 | 511 | run_test(|a| panic_after_init_by_loop(a));
|
473 | 512 |
|
| 513 | + run_test(|a| bindings_after_at_dynamic_init_move(a, true)); |
| 514 | + run_test(|a| bindings_after_at_dynamic_init_move(a, false)); |
| 515 | + run_test(|a| bindings_after_at_dynamic_init_ref(a, true)); |
| 516 | + run_test(|a| bindings_after_at_dynamic_init_ref(a, false)); |
| 517 | + run_test(|a| bindings_after_at_dynamic_drop_move(a, true)); |
| 518 | + run_test(|a| bindings_after_at_dynamic_drop_move(a, false)); |
| 519 | + run_test(|a| bindings_after_at_dynamic_drop_ref(a, true)); |
| 520 | + run_test(|a| bindings_after_at_dynamic_drop_ref(a, false)); |
| 521 | + |
474 | 522 | run_test_nopanic(|a| union1(a));
|
475 | 523 | }
|
0 commit comments