Test conditional initialization validation in async fns

This commit is contained in:
Ryan Gorup 2019-08-06 09:54:30 -07:00
parent 4be0675589
commit 811c304029
3 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,18 @@
// check-pass
// edition:2018
// compile-flags: --crate-type lib
#![feature(async_await)]
async fn conditional_and_guaranteed_initialization(x: usize) -> usize {
let y;
if x > 5 {
y = echo(10).await;
} else {
y = get_something().await;
}
y
}
async fn echo(x: usize) -> usize { x }
async fn get_something() -> usize { 10 }

View File

@ -0,0 +1,16 @@
// compile-fail
// edition:2018
// compile-flags: --crate-type lib
#![feature(async_await)]
async fn no_non_guaranteed_initialization(x: usize) -> usize {
let y;
if x > 5 {
y = echo(10).await;
}
y
//~^ use of possibly uninitialized variable: `y`
}
async fn echo(x: usize) -> usize { x + 1 }

View File

@ -0,0 +1,9 @@
error[E0381]: use of possibly uninitialized variable: `y`
--> $DIR/no-non-guaranteed-initialization.rs:12:5
|
LL | y
| ^ use of possibly uninitialized `y`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0381`.