]> git.ipfire.org Git - thirdparty/gcc.git/commit
c++: add -Wdeprecated-literal-operator [CWG2521]
authorJason Merrill <jason@redhat.com>
Wed, 2 Oct 2024 15:21:14 +0000 (11:21 -0400)
committerJason Merrill <jason@redhat.com>
Thu, 3 Oct 2024 16:39:00 +0000 (12:39 -0400)
commitb6ff52a9957c05834351a39517dd49966cb1092c
treea6a1e8163fe637b9bce7419bc0a1b27d21236d2c
parent5b08ae503dd4aef2789a667daaf1984e7cc94aaa
c++: add -Wdeprecated-literal-operator [CWG2521]

C++23 CWG issue 2521 (https://wg21.link/cwg2521) deprecates user-defined
literal operators declared with the optional space between "" and the
suffix.

Many testcases used that syntax; I removed the space from most of them, and
added C++23 warning tests to a few.

CWG 2521

gcc/ChangeLog:

* doc/invoke.texi: Document -Wdeprecated-literal-operator.

gcc/c-family/ChangeLog:

* c.opt: Add -Wdeprecated-literal-operator.
* c-opts.cc (c_common_post_options): Default on in C++23.
* c.opt.urls: Regenerate.

gcc/cp/ChangeLog:

* parser.cc (location_between): New.
(cp_parser_operator): Handle -Wdeprecated-literal-operator.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/udlit-string-literal.h
* g++.dg/cpp0x/Wliteral-suffix2.C
* g++.dg/cpp0x/constexpr-55708.C
* g++.dg/cpp0x/gnu_fext-numeric-literals.C
* g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C
* g++.dg/cpp0x/pr51420.C
* g++.dg/cpp0x/pr60209-neg.C
* g++.dg/cpp0x/pr60209.C
* g++.dg/cpp0x/pr61038.C
* g++.dg/cpp0x/std_fext-numeric-literals.C
* g++.dg/cpp0x/std_fno-ext-numeric-literals.C
* g++.dg/cpp0x/udlit-addr.C
* g++.dg/cpp0x/udlit-args-neg.C
* g++.dg/cpp0x/udlit-args.C
* g++.dg/cpp0x/udlit-args2.C
* g++.dg/cpp0x/udlit-clink-neg.C
* g++.dg/cpp0x/udlit-concat-neg.C
* g++.dg/cpp0x/udlit-concat.C
* g++.dg/cpp0x/udlit-constexpr.C
* g++.dg/cpp0x/udlit-cpp98-neg.C
* g++.dg/cpp0x/udlit-declare-neg.C
* g++.dg/cpp0x/udlit-embed-quote.C
* g++.dg/cpp0x/udlit-extended-id-1.C
* g++.dg/cpp0x/udlit-extended-id-3.C
* g++.dg/cpp0x/udlit-extern-c.C
* g++.dg/cpp0x/udlit-friend.C
* g++.dg/cpp0x/udlit-general.C
* g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C
* g++.dg/cpp0x/udlit-implicit-conv-neg.C
* g++.dg/cpp0x/udlit-inline.C
* g++.dg/cpp0x/udlit-mangle.C
* g++.dg/cpp0x/udlit-member-neg.C
* g++.dg/cpp0x/udlit-namespace.C
* g++.dg/cpp0x/udlit-nofunc-neg.C
* g++.dg/cpp0x/udlit-nonempty-str-neg.C
* g++.dg/cpp0x/udlit-nosuffix-neg.C
* g++.dg/cpp0x/udlit-nounder-neg.C
* g++.dg/cpp0x/udlit-operator-neg.C
* g++.dg/cpp0x/udlit-overflow-neg.C
* g++.dg/cpp0x/udlit-overflow.C
* g++.dg/cpp0x/udlit-preproc-neg.C
* g++.dg/cpp0x/udlit-raw-length.C
* g++.dg/cpp0x/udlit-raw-op-string-neg.C
* g++.dg/cpp0x/udlit-raw-op.C
* g++.dg/cpp0x/udlit-raw-str.C
* g++.dg/cpp0x/udlit-resolve-char8_t.C
* g++.dg/cpp0x/udlit-resolve.C
* g++.dg/cpp0x/udlit-shadow-neg.C
* g++.dg/cpp0x/udlit-string-length.C
* g++.dg/cpp0x/udlit-suffix-neg.C
* g++.dg/cpp0x/udlit-template.C
* g++.dg/cpp0x/udlit-tmpl-arg-neg.C
* g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
* g++.dg/cpp0x/udlit-tmpl-arg.C
* g++.dg/cpp0x/udlit-tmpl-parms-neg.C
* g++.dg/cpp0x/udlit-tmpl-parms.C
* g++.dg/cpp1y/pr57640.C
* g++.dg/cpp1y/pr88872.C
* g++.dg/cpp26/unevalstr1.C
* g++.dg/cpp2a/concepts-pr60391.C
* g++.dg/cpp2a/consteval-prop21.C
* g++.dg/cpp2a/nontype-class6.C
* g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
* g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
* g++.dg/cpp2a/udlit-class-nttp-ctad.C
* g++.dg/cpp2a/udlit-class-nttp-neg.C
* g++.dg/cpp2a/udlit-class-nttp-neg2.C
* g++.dg/cpp2a/udlit-class-nttp.C
* g++.dg/ext/is_convertible2.C
* g++.dg/lookup/pr87269.C
* g++.dg/cpp0x/udlit_system_header: Adjust for C++23 deprecated
operator "" _suffix.
* g++.dg/DRs/dr2521.C: New test.
77 files changed:
gcc/c-family/c-opts.cc
gcc/c-family/c.opt
gcc/c-family/c.opt.urls
gcc/cp/parser.cc
gcc/doc/invoke.texi
gcc/testsuite/g++.dg/DRs/dr2521.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/Wliteral-suffix2.C
gcc/testsuite/g++.dg/cpp0x/constexpr-55708.C
gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/gnu_fno-ext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/pr51420.C
gcc/testsuite/g++.dg/cpp0x/pr60209-neg.C
gcc/testsuite/g++.dg/cpp0x/pr60209.C
gcc/testsuite/g++.dg/cpp0x/pr61038.C
gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/std_fno-ext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/udlit-addr.C
gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-args.C
gcc/testsuite/g++.dg/cpp0x/udlit-args2.C
gcc/testsuite/g++.dg/cpp0x/udlit-clink-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-concat-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-concat.C
gcc/testsuite/g++.dg/cpp0x/udlit-constexpr.C
gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-1.C
gcc/testsuite/g++.dg/cpp0x/udlit-extended-id-3.C
gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C
gcc/testsuite/g++.dg/cpp0x/udlit-friend.C
gcc/testsuite/g++.dg/cpp0x/udlit-general.C
gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg-char8_t.C
gcc/testsuite/g++.dg/cpp0x/udlit-implicit-conv-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-inline.C
gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C
gcc/testsuite/g++.dg/cpp0x/udlit-member-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-namespace.C
gcc/testsuite/g++.dg/cpp0x/udlit-nofunc-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-nonempty-str-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-nosuffix-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-nounder-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-operator-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-overflow-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-overflow.C
gcc/testsuite/g++.dg/cpp0x/udlit-preproc-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-raw-length.C
gcc/testsuite/g++.dg/cpp0x/udlit-raw-op-string-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-raw-op.C
gcc/testsuite/g++.dg/cpp0x/udlit-raw-str.C
gcc/testsuite/g++.dg/cpp0x/udlit-resolve-char8_t.C
gcc/testsuite/g++.dg/cpp0x/udlit-resolve.C
gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-string-length.C
gcc/testsuite/g++.dg/cpp0x/udlit-string-literal.h
gcc/testsuite/g++.dg/cpp0x/udlit-suffix-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-template.C
gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg-neg2.C
gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-arg.C
gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms-neg.C
gcc/testsuite/g++.dg/cpp0x/udlit-tmpl-parms.C
gcc/testsuite/g++.dg/cpp0x/udlit_system_header
gcc/testsuite/g++.dg/cpp1y/pr57640.C
gcc/testsuite/g++.dg/cpp1y/pr88872.C
gcc/testsuite/g++.dg/cpp26/unevalstr1.C
gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C
gcc/testsuite/g++.dg/cpp2a/consteval-prop21.C
gcc/testsuite/g++.dg/cpp2a/nontype-class6.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad-neg2.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-ctad.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
gcc/testsuite/g++.dg/ext/is_convertible2.C
gcc/testsuite/g++.dg/lookup/pr87269.C