about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-12-18 23:17:58 +0000
committerMichael Goulet <michael@errs.io>2023-12-18 23:56:44 +0000
commit0f10acf7682b1ce683e48201c4b2bce026329093 (patch)
treeb71c8492b8a3c3d883283db308f75aa94424547d
parentbb33200047722e321480f7e5004a74395804958d (diff)
downloadrust-0f10acf7682b1ce683e48201c4b2bce026329093.tar.gz
rust-0f10acf7682b1ce683e48201c4b2bce026329093.zip
Add a test demonstrating that RFC's note on diverging returns is subsumed by just inferring unit as ret type
-rw-r--r--tests/ui/coroutine/return-types-diverge.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/coroutine/return-types-diverge.rs b/tests/ui/coroutine/return-types-diverge.rs
new file mode 100644
index 00000000000..5f21c8cbf34
--- /dev/null
+++ b/tests/ui/coroutine/return-types-diverge.rs
@@ -0,0 +1,20 @@
+// compile-flags: --edition 2024 -Zunstable-options
+// check-pass
+
+#![feature(gen_blocks)]
+
+fn diverge() -> ! { loop {} }
+
+async gen fn async_gen_fn() -> i32 { diverge() }
+
+gen fn gen_fn() -> i32 { diverge() }
+
+fn async_gen_block() {
+    async gen { yield (); diverge() };
+}
+
+fn gen_block() {
+    gen { yield (); diverge() };
+}
+
+fn main() {}