about summary refs log tree commit diff
path: root/tests/ui/lint/unused/unused-async.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/lint/unused/unused-async.rs')
-rw-r--r--tests/ui/lint/unused/unused-async.rs62
1 files changed, 62 insertions, 0 deletions
diff --git a/tests/ui/lint/unused/unused-async.rs b/tests/ui/lint/unused/unused-async.rs
new file mode 100644
index 00000000000..4be93aa155a
--- /dev/null
+++ b/tests/ui/lint/unused/unused-async.rs
@@ -0,0 +1,62 @@
+// edition:2018
+#![deny(unused_must_use)]
+
+
+#[must_use]
+async fn foo() -> i32 {
+    1
+}
+
+#[must_use]
+fn bar() -> impl std::future::Future<Output=i32> {
+    async {
+        42
+    }
+}
+
+async fn baz() -> i32 {
+    0
+}
+
+struct Wowee {}
+
+impl Wowee {
+    #[must_use]
+    async fn test_method() -> i32 {
+        1
+    }
+}
+
+async fn test() {
+    foo(); //~ ERROR unused return value of `foo` that must be used
+    //~^ ERROR unused implementer of `Future` that must be used
+    foo().await; //~ ERROR unused output of future returned by `foo` that must be used
+    bar(); //~ ERROR unused return value of `bar` that must be used
+    //~^ ERROR unused implementer of `Future` that must be used
+    bar().await; //~ ERROR unused output of future returned by `bar` that must be used
+    baz(); //~ ERROR unused implementer of `Future` that must be used
+    baz().await; // ok
+}
+
+/* FIXME(guswynn) update this test when async-fn-in-traits works
+trait Doer {
+    #[must_use]
+    async fn test_trait_method() -> i32;
+    WARNING must_use
+    async fn test_other_trait() -> i32;
+}
+
+impl Doer for Wowee {
+    async fn test_trait_method() -> i32 {
+        1
+    }
+    #[must_use]
+    async fn test_other_trait() -> i32 {
+        WARNING must_use
+        1
+    }
+}
+*/
+
+fn main() {
+}