[PATCH] D116204: [C++20] [Coroutines] Allow promise_type to not define return_void or return_value

Arthur O'Dwyer via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Dec 23 08:52:51 PST 2021

Quuxplusone added inline comments.

Comment at: clang/test/SemaCXX/coroutines.cpp:987
+// So it isn't ill-formed if the promise doesn't define return_value and return_void. It is just a UB.
+coro<promise_no_return_func> no_return_value_or_return_void() {
It's not UB; it's //potential// UB.
My understanding is that such a coroutine could still be used:
- if it exits by throwing an exception instead of `co_return`'ing
- if it suspends and then its caller `destroy`s it instead of `resume`ing it

I believe it would be useful to have some actual tests for these scenarios, that would actually run and check that the runtime behavior is correct, or at least check the IR that was generated. Is that possible?



More information about the cfe-commits mailing list