| // Test that we don't allow awaiting from an async fn while a local is partially |
| // initialized. |
| |
| // edition:2018 |
| |
| #![feature(async_await)] |
| |
| struct S { x: i32, y: i32 } |
| struct T(i32, i32); |
| |
| async fn noop() {} |
| |
| async fn test_tuple() { |
| let mut t: (i32, i32); |
| t.0 = 42; |
| //~^ ERROR assign to part of possibly uninitialized variable: `t` [E0381] |
| noop().await; |
| t.1 = 88; |
| let _ = t; |
| } |
| |
| async fn test_tuple_struct() { |
| let mut t: T; |
| t.0 = 42; |
| //~^ ERROR assign to part of possibly uninitialized variable: `t` [E0381] |
| noop().await; |
| t.1 = 88; |
| let _ = t; |
| } |
| |
| async fn test_struct() { |
| let mut t: S; |
| t.x = 42; |
| //~^ ERROR assign to part of possibly uninitialized variable: `t` [E0381] |
| noop().await; |
| t.y = 88; |
| let _ = t; |
| } |
| |
| fn main() { |
| let _ = test_tuple(); |
| let _ = test_tuple_struct(); |
| let _ = test_struct(); |
| } |