From 811c3040299beb2cc90dc143b90af32dc78b0a3a Mon Sep 17 00:00:00 2001 From: Ryan Gorup Date: Tue, 6 Aug 2019 09:54:30 -0700 Subject: [PATCH] Test conditional initialization validation in async fns --- ...onditional-and-guaranteed-initialization.rs | 18 ++++++++++++++++++ .../no-non-guaranteed-initialization.rs | 16 ++++++++++++++++ .../no-non-guaranteed-initialization.stderr | 9 +++++++++ 3 files changed, 43 insertions(+) create mode 100644 src/test/ui/async-await/conditional-and-guaranteed-initialization.rs create mode 100644 src/test/ui/async-await/no-non-guaranteed-initialization.rs create mode 100644 src/test/ui/async-await/no-non-guaranteed-initialization.stderr diff --git a/src/test/ui/async-await/conditional-and-guaranteed-initialization.rs b/src/test/ui/async-await/conditional-and-guaranteed-initialization.rs new file mode 100644 index 000000000000..a5947e7f7187 --- /dev/null +++ b/src/test/ui/async-await/conditional-and-guaranteed-initialization.rs @@ -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 } diff --git a/src/test/ui/async-await/no-non-guaranteed-initialization.rs b/src/test/ui/async-await/no-non-guaranteed-initialization.rs new file mode 100644 index 000000000000..a916afb6b09b --- /dev/null +++ b/src/test/ui/async-await/no-non-guaranteed-initialization.rs @@ -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 } diff --git a/src/test/ui/async-await/no-non-guaranteed-initialization.stderr b/src/test/ui/async-await/no-non-guaranteed-initialization.stderr new file mode 100644 index 000000000000..fb94522cac08 --- /dev/null +++ b/src/test/ui/async-await/no-non-guaranteed-initialization.stderr @@ -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`.