[PATCH] D33625: [coroutines] Diagnose invalid result types for `await_resume` and `await_suspend` and add missing conversions.
Eric Fiselier via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun May 28 12:53:43 PDT 2017
EricWF marked an inline comment as done.
EricWF added inline comments.
================
Comment at: lib/Sema/SemaCoroutine.cpp:393
+ // - await-suspend is the expression e.await_suspend(h), which shall be
+ // a prvalue of type void or bool.
+ QualType RetType = AwaitSuspend->getType();
----------------
rsmith wrote:
> It looks like you're not checking the 'prvalue' part of this.
I thought so too. I'll add tests to make sure it's being handled correctly.
The following test should expose a lack of checking for `prvalues`, right?
```
template <class BoolTy>
struct TestAwait {
bool await_ready();
template <class F> BoolTy await_suspend(F); // expected-error
void await_resume();
};
void test() {
co_await TestAwait<bool&&>{};
co_await TestAwait<bool&>{};
}
```
https://reviews.llvm.org/D33625
More information about the cfe-commits
mailing list