Rollup merge of #63331 - gorup:conditionalinit, r=cramertj

Test conditional initialization validation in async fns

r? @cramertj

Per [paper doc](https://paper.dropbox.com/doc/async.await-Call-for-Tests--AiWF2Nt8tgDiA70qFI~oiLOOAg-nMyZGrra7dz9KcFRMLKJy) calling for async/.await tests, tests are desired for conditionally initialized local variables. This PR hopes to provide tests for that.

#63294 seems to be tracking the items from the paper doc that this PR is related to
#62121 is an open issue asking for more async/.await tests that this relates to

---
👍 executed 2 new tests
👍 tidy
This commit is contained in:
Mazdak Farrokhzad 2019-08-08 07:35:35 +02:00 committed by GitHub
commit 4f415fca37
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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`.