about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/ui/async-await/conditional-and-guaranteed-initialization.rs18
-rw-r--r--src/test/ui/async-await/no-non-guaranteed-initialization.rs16
-rw-r--r--src/test/ui/async-await/no-non-guaranteed-initialization.stderr9
3 files changed, 43 insertions, 0 deletions
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 00000000000..a5947e7f718
--- /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 00000000000..a916afb6b09
--- /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 00000000000..fb94522cac0
--- /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`.