]> gcc.gnu.org Git - gcc.git/commit
c++: Don't emit deprecated warnings on lambda declarations
authorJakub Jelinek <jakub@redhat.com>
Wed, 4 May 2022 08:07:36 +0000 (10:07 +0200)
committerJakub Jelinek <jakub@redhat.com>
Fri, 6 May 2022 23:43:45 +0000 (01:43 +0200)
commit2fd2e6c1dffe305b10477b83a6c350a3f19e4058
treed4b17161a356d3f2599f2439d730d8a703789a8f
parent65c1c480b33ea36e9505ed444eed09a0cc1c9256
c++: Don't emit deprecated warnings on lambda declarations

On the following testcase, we emit deprecated warnings
even on merge declarations of those lambdas (the dg-bogus directives), while
IMHO we should emit them only when something actually calls those lambdas.

The following patch temporarily disables that diagnostics during
maybe_add_lambda_conv_op.

PR2173R1 also says that ambiguity between attribute-specifier-seq at the
end of requires-clause and attribute-specifier-seq from lambda-expression
should be resolved to attribute-specifier-seq for the latter.  Do we need
to do anything about that?  I mean, can a valid requires-clause end with
an attribute-specifier-seq?  Say operator int [[]] is valid primary
expression, but requires operator int [[]] isn't valid, nor is
requires operator int, no?

2022-05-04  Jakub Jelinek  <jakub@redhat.com>

* lambda.c: Include decl.h.
(maybe_add_lambda_conv_op): Temporarily override deprecated_state to
DEPRECATED_SUPPRESS.

* g++.dg/cpp23/lambda-attr1.C: New test.

(cherry picked from commit 1c8e9bed9b9d46d479b83ae05b334543f66961fb)
gcc/cp/lambda.c
gcc/testsuite/g++.dg/cpp23/lambda-attr1.C [new file with mode: 0644]
This page took 0.060366 seconds and 6 git commands to generate.