https://gcc.gnu.org/g:a65cafbc522d97439ff58e939d88c2a0e83ea516

commit r16-8116-ga65cafbc522d97439ff58e939d88c2a0e83ea516
Author: Marek Polacek <[email protected]>
Date:   Fri Mar 13 13:00:46 2026 -0400

    c++: fix for printing std::meta::info [PR124489]
    
    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
            instead of pp_string.
            <case META_TYPE>: Likewise.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/reflect/diag6.C: New test.
    
    Reviewed-by: Jason Merrill <[email protected]>

Diff:
---
 gcc/cp/error.cc                      |  4 ++--
 gcc/testsuite/g++.dg/reflect/diag6.C | 10 ++++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 25e438c1784d..f198a1fe0656 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 000000000000..61caa082551d
--- /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." }
+}

Reply via email to