aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/c99_functions.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2024-08-16 11:43:18 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2024-08-16 11:43:18 +0200
commit2f90f3850eaf9d703d9eb63d5f0347158aa11027 (patch)
treee83cc01718e451c4481a55a4d37d0dd551313837 /libgfortran/intrinsics/c99_functions.c
parent0470c8e007dfba46aed30ee82c9b0ee79c3d826d (diff)
downloadgcc-trunk.zip
gcc-trunk.tar.gz
gcc-trunk.tar.bz2
c++: Pedwarn on [[]]; at class scope [PR110345]HEADtrunkmaster
For C++ 26 P2552R3 I went through all the spots (except modules) where attribute-specifier-seq appears in the grammar and tried to construct a testcase in all those spots, for now for [[deprecated]] attribute. The fourth issue is that we just emit (when enabled) -Wextra-semi warning not just for lone semicolon at class scope (correct), but also for [[]]; or [[whatever]]; there too. While just semicolon is valid in C++11 and newer, https://eel.is/c++draft/class.mem#nt:member-declaration allows empty-declaration, unlike namespace scope or block scope something like attribute-declaration or empty statement with attributes applied for it aren't supported. While syntactically it matches attribute-specifier-seq [opt] decl-specifier-seq [opt] member-declarator-list [opt] ; with the latter two omitted, there is https://eel.is/c++draft/class.mem#general-3 which says that is not valid. So, the following patch emits a pedwarn in that case. 2024-08-16 Jakub Jelinek <jakub@redhat.com> PR c++/110345 * parser.cc (cp_parser_member_declaration): Call maybe_warn_extra_semi only if it is empty-declaration, if there are some tokens like attribute, pedwarn that the declaration doesn't declare anything. * g++.dg/cpp0x/gen-attrs-84.C: New test.
Diffstat (limited to 'libgfortran/intrinsics/c99_functions.c')
0 files changed, 0 insertions, 0 deletions