diff options
author | Arsen Arsenović <arsen@aarsen.me> | 2024-07-25 01:00:02 +0200 |
---|---|---|
committer | Arsen Arsenović <arsen@gcc.gnu.org> | 2024-07-30 13:44:13 +0200 |
commit | 0c382da0943dc7d14455ba2ada2f620a25bd1366 (patch) | |
tree | 365b8e6e9f9d7ff3c94c996978425fa01016bd11 /gcc/common | |
parent | a362c9ca4ef6585e678f899705043a9aa10dd670 (diff) | |
download | gcc-0c382da0943dc7d14455ba2ada2f620a25bd1366.zip gcc-0c382da0943dc7d14455ba2ada2f620a25bd1366.tar.gz gcc-0c382da0943dc7d14455ba2ada2f620a25bd1366.tar.bz2 |
c++: diagnose usage of co_await and co_yield in default args [PR115906]
This is a partial fix for PR115906. Per [expr.await] 2s3, "An
await-expression shall not appear in a default argument
([dcl.fct.default])". This patch introduces the diagnostic in that
case, and in the case of a co_yield (as co_yield is defined in terms of
co_await, so prerequisites of co_await hold).
PR c++/115906 - [coroutines] missing diagnostic and ICE when co_await used as default argument in function declaration
gcc/cp/ChangeLog:
PR c++/115906
* parser.cc (cp_parser_unary_expression): Reject await
expressions if use of local variables is currently forbidden.
(cp_parser_yield_expression): Reject yield expressions if use of
local variables is currently forbidden.
gcc/testsuite/ChangeLog:
PR c++/115906
* g++.dg/coroutines/pr115906-yield.C: New test.
* g++.dg/coroutines/pr115906.C: New test.
* g++.dg/coroutines/co-await-syntax-02-outside-fn.C: Don't rely
on default arguments.
* g++.dg/coroutines/co-yield-syntax-01-outside-fn.C: Ditto.
Diffstat (limited to 'gcc/common')
0 files changed, 0 insertions, 0 deletions