On 3/16/26 10:40 AM, Marek Polacek wrote:
Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk?-- >8 -- When printing the diagnostics in this test, we're saying "constexprstd::meta::info dm" which misses a space. We should use pp_cxx_ws_string which does pp_c_maybe_whitespace when printing "std::meta::info". PR c++/124489 gcc/cp/ChangeLog: * error.cc (dump_type) <case NULLPTR_TYPE>: Use pp_cxx_ws_string
Switch cases in ChangeLogs are generally spelled with [], e.g. * error.cc (dump_type) [NULLPTR_TYPE] OK with that change.
instead of pp_string. <case META_TYPE>: Likewise. gcc/testsuite/ChangeLog: * g++.dg/reflect/diag6.C: New test. --- gcc/cp/error.cc | 4 ++-- gcc/testsuite/g++.dg/reflect/diag6.C | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/reflect/diag6.C diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc index 25e438c1784..f198a1fe065 100644 --- a/gcc/cp/error.cc +++ b/gcc/cp/error.cc @@ -875,11 +875,11 @@ dump_type (cxx_pretty_printer *pp, tree t, int flags) break;case NULLPTR_TYPE:- pp_string (pp, "std::nullptr_t"); + pp_cxx_ws_string (pp, "std::nullptr_t"); break;case META_TYPE:- pp_string (pp, "std::meta::info"); + pp_cxx_ws_string (pp, "std::meta::info"); break;case SPLICE_SCOPE:diff --git a/gcc/testsuite/g++.dg/reflect/diag6.C b/gcc/testsuite/g++.dg/reflect/diag6.C new file mode 100644 index 00000000000..61caa082551 --- /dev/null +++ b/gcc/testsuite/g++.dg/reflect/diag6.C @@ -0,0 +1,10 @@ +// PR c++/124489 +// { dg-do compile { target c++26 } } +// { dg-additional-options "-freflection" } + +void +g () +{ + constexpr decltype(^^::) dm = ^^int; // { dg-message ".constexpr std::meta::info dm. previously declared here" } + constexpr decltype(^^::) dm = ^^int; // { dg-error "redeclaration of .constexpr std::meta::info dm." } +} base-commit: 64f95a0eeaf1cb6d07cc414c9b2953a494e03be1
