Tested reflect/* on x86_64-pc-linux-gnu, ok for trunk?

-- >8 --
Modifying the recently added crash22.C test to use a variable template
shows that inform_tree_category doesn't say reflection of what we
actually got.  With this patch we say:

  • but 'Y<T>' is a variable template
    crash23.C:6:13:
        6 | constexpr T Y{};
          |             ^

I couldn't figure out a test for alias templates so I'm not adding
that now.

        PR c++/124493

gcc/cp/ChangeLog:

        * error.cc (inform_tree_category): Handle variable templates.

gcc/testsuite/ChangeLog:

        * g++.dg/reflect/crash23.C: New test.
---
 gcc/cp/error.cc                        | 2 ++
 gcc/testsuite/g++.dg/reflect/crash23.C | 9 +++++++++
 2 files changed, 11 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash23.C

diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index f198a1fe065..b3e66924e31 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -4006,6 +4006,8 @@ inform_tree_category (tree t)
     inform (loc, "but %qE is a function template", t);
   else if (DECL_CLASS_TEMPLATE_P (t))
     inform (loc, "but %qE is a class template", t);
+  else if (variable_template_p (t))
+    inform (loc, "but %qE is a variable template", t);
   else if (TREE_CODE (t) == NAMESPACE_DECL)
     inform (loc, "but %qE is a namespace", t);
   else if (TREE_CODE (t) == CONST_DECL && !DECL_TEMPLATE_PARM_P (t))
diff --git a/gcc/testsuite/g++.dg/reflect/crash23.C 
b/gcc/testsuite/g++.dg/reflect/crash23.C
new file mode 100644
index 00000000000..88d71f05935
--- /dev/null
+++ b/gcc/testsuite/g++.dg/reflect/crash23.C
@@ -0,0 +1,9 @@
+// PR c++/124493
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+
+template<typename T>
+constexpr T Y{};       // { dg-message "but .Y<T>. is a variable template" }
+template<decltype(^^::) R>
+constexpr auto f () -> [:R:]<0> { return {}; } // { dg-error "expected a 
reflection of a type template" }
+constexpr auto a = f<^^Y>(); // { dg-error "no matching function" }

base-commit: 9d17a04f241e5c54b98456995ed8ce4d19c7db31
-- 
2.53.0

Reply via email to