]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c++/reflection: enable more testing
authorMarek Polacek <polacek@redhat.com>
Thu, 15 Jan 2026 19:57:13 +0000 (14:57 -0500)
committerMarek Polacek <polacek@redhat.com>
Fri, 16 Jan 2026 14:06:41 +0000 (09:06 -0500)
These TODOs already work fine so let's enable more testing.

gcc/testsuite/ChangeLog:

* g++.dg/reflect/member15.C: Enable commented-out test.
* g++.dg/reflect/splice5.C: Likewise.  Add XFAIL.

Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/testsuite/g++.dg/reflect/member15.C
gcc/testsuite/g++.dg/reflect/splice5.C

index 36f12d8b539e64115a1a6a2a7c3c7748644d4a56..8646eb209fdb3d0c2926cdbd8f7ae97769d78702 100644 (file)
@@ -117,12 +117,8 @@ qux ()
   if (ta != 64 || tb != 45 || tc != 56)
     __builtin_abort ();
   U u = { U::F, U::I };
-#if 0
-  // TODO: This doesn't work yet:
   u.[:nonstatic_data_members_of (^^C, uctx)[0]:] = u.[:^^C::E::G:];
-#else
   u.[:nonstatic_data_members_of (^^C, uctx)[0]:] = u.[:^^C::G:];
-#endif
   u.[:nonstatic_data_members_of (^^C, uctx)[1]:] = u.[:^^C::H:];
   if (u.j != U::G || u.k != U::E::H)
     __builtin_abort ();
@@ -151,12 +147,8 @@ fred ()
   if (ta != 64 || tb != 45 || tc != 56)
     __builtin_abort ();
   C u = { U::F, U::I };
-#if 0
-  // TODO: This doesn't work yet:
   u.[:nonstatic_data_members_of (^^C, uctx)[0]:] = u.[:^^C::E::G:];
-#else
   u.[:nonstatic_data_members_of (^^C, uctx)[0]:] = u.[:^^C::G:];
-#endif
   u.[:nonstatic_data_members_of (^^C, uctx)[1]:] = u.[:^^C::H:];
   if (u.j != U::G || u.k != U::E::H)
     __builtin_abort ();
index f06e22707859eb6e532716412b33aeb216e2d47e..781448633376f671c5cd40dd06e66a82041ceead 100644 (file)
@@ -26,10 +26,8 @@ qux (S &s)
   // TODO: We don't reject this one.
   template [: N == 0 ? ^^foo : ^^:: :] (0);    // { dg-error "reflection 'foo' not usable in a template splice" "" { xfail *-*-* } }
   template [: N == 0 ? ^^bar : ^^:: :] (0);    // { dg-message "only function templates are allowed here" "" { xfail *-*-* } .-1 }
-  // TODO: The first one should be rejected, the second one accepted.
-  // We emit nonsensical unrelated errors.
-  // s.template [: N == 0 ? ^^S::foo : ^^:: :] (0);
-  // s.template [: N == 0 ? ^^S::bar : ^^:: :] (0);
+  s.template [: N == 0 ? ^^S::foo : ^^:: :] (0); // { dg-error "reflection 'foo' not usable in a template splice" "" { xfail *-*-* } }
+  s.template [: N == 0 ? ^^S::bar : ^^:: :] (0);
 }
 
 void