summaryrefslogtreecommitdiffstats
path: root/tests/ui/lint/must_not_suspend/trait.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/lint/must_not_suspend/trait.rs')
-rw-r--r--tests/ui/lint/must_not_suspend/trait.rs28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/ui/lint/must_not_suspend/trait.rs b/tests/ui/lint/must_not_suspend/trait.rs
new file mode 100644
index 000000000..6c911cb4b
--- /dev/null
+++ b/tests/ui/lint/must_not_suspend/trait.rs
@@ -0,0 +1,28 @@
+// edition:2018
+#![feature(must_not_suspend)]
+#![deny(must_not_suspend)]
+
+#[must_not_suspend]
+trait Wow {}
+
+impl Wow for i32 {}
+
+fn r#impl() -> impl Wow {
+ 1
+}
+
+fn r#dyn() -> Box<dyn Wow> {
+ Box::new(1)
+}
+
+async fn other() {}
+
+pub async fn uhoh() {
+ let _guard1 = r#impl(); //~ ERROR implementer of `Wow` held across
+ let _guard2 = r#dyn(); //~ ERROR boxed `Wow` trait object held across
+
+ other().await;
+}
+
+fn main() {
+}