public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context @ 2021-03-22 13:04 nilsgladitz at gmail dot com 2021-09-30 19:16 ` [Bug c++/99710] " iains at gcc dot gnu.org ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: nilsgladitz at gmail dot com @ 2021-03-22 13:04 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99710 Bug ID: 99710 Summary: coroutines: co_yield and co_await should only be allowed in suspension context Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: nilsgladitz at gmail dot com Target Milestone: --- I quite enjoyed seemingly being able to co_await in exception catch handlers but as I am being told by another compiler this is apparently not legal. Not sure I really understand why the standard disallows this but perhaps gcc should issue a corresponding error diagnostic as well. Equivalent (fixed) issue report I found for clang: https://bugs.llvm.org/show_bug.cgi?id=40978 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/99710] coroutines: co_yield and co_await should only be allowed in suspension context 2021-03-22 13:04 [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context nilsgladitz at gmail dot com @ 2021-09-30 19:16 ` iains at gcc dot gnu.org 2021-09-30 19:16 ` iains at gcc dot gnu.org ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: iains at gcc dot gnu.org @ 2021-09-30 19:16 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99710 Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2021-09-30 CC| |iains at gcc dot gnu.org Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Iain Sandoe <iains at gcc dot gnu.org> --- indeed we should reject this ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/99710] coroutines: co_yield and co_await should only be allowed in suspension context 2021-03-22 13:04 [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context nilsgladitz at gmail dot com 2021-09-30 19:16 ` [Bug c++/99710] " iains at gcc dot gnu.org @ 2021-09-30 19:16 ` iains at gcc dot gnu.org 2021-10-02 18:40 ` iains at gcc dot gnu.org 2021-10-03 19:54 ` cvs-commit at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: iains at gcc dot gnu.org @ 2021-09-30 19:16 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99710 --- Comment #2 from Iain Sandoe <iains at gcc dot gnu.org> --- #include <coroutine> struct task { struct promise_type { std::suspend_always initial_suspend(); std::suspend_always final_suspend() noexcept; task get_return_object(); void return_void(); void unhandled_exception(); }; }; task my_coro () { try { } catch (...) { // [expr.await] co_await std::suspend_always{}; // { dg-error "We should have an error here" } } } ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/99710] coroutines: co_yield and co_await should only be allowed in suspension context 2021-03-22 13:04 [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context nilsgladitz at gmail dot com 2021-09-30 19:16 ` [Bug c++/99710] " iains at gcc dot gnu.org 2021-09-30 19:16 ` iains at gcc dot gnu.org @ 2021-10-02 18:40 ` iains at gcc dot gnu.org 2021-10-03 19:54 ` cvs-commit at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: iains at gcc dot gnu.org @ 2021-10-02 18:40 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99710 Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |iains at gcc dot gnu.org Status|NEW |ASSIGNED ^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/99710] coroutines: co_yield and co_await should only be allowed in suspension context 2021-03-22 13:04 [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context nilsgladitz at gmail dot com ` (2 preceding siblings ...) 2021-10-02 18:40 ` iains at gcc dot gnu.org @ 2021-10-03 19:54 ` cvs-commit at gcc dot gnu.org 3 siblings, 0 replies; 5+ messages in thread From: cvs-commit at gcc dot gnu.org @ 2021-10-03 19:54 UTC (permalink / raw) To: gcc-bugs https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99710 --- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Iain D Sandoe <iains@gcc.gnu.org>: https://gcc.gnu.org/g:650beb110538097b9c3e8600149b333a83e7e836 commit r12-4102-g650beb110538097b9c3e8600149b333a83e7e836 Author: Iain Sandoe <iain@sandoe.co.uk> Date: Sat Oct 2 14:43:39 2021 +0100 coroutines: Await expressions are not allowed in handlers [PR 99710]. C++20 [expr.await] / 2 An await-expression shall appear only in a potentially-evaluated expression within the compound-statement of a function-body outside of a handler. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/99710 gcc/cp/ChangeLog: * coroutines.cc (await_statement_walker): Report an error if an await expression is found in a handler body. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr99710.C: New test. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-10-03 19:54 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-03-22 13:04 [Bug c++/99710] New: coroutines: co_yield and co_await should only be allowed in suspension context nilsgladitz at gmail dot com 2021-09-30 19:16 ` [Bug c++/99710] " iains at gcc dot gnu.org 2021-09-30 19:16 ` iains at gcc dot gnu.org 2021-10-02 18:40 ` iains at gcc dot gnu.org 2021-10-03 19:54 ` cvs-commit at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).