https://gcc.gnu.org/g:0dfe0f263bd8215baa6b81c3e6bd6a5f97adb843
commit r16-6820-g0dfe0f263bd8215baa6b81c3e6bd6a5f97adb843 Author: Marek Polacek <[email protected]> Date: Thu Jan 15 14:57:13 2026 -0500 c++/reflection: enable more testing 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 <[email protected]> Diff: --- gcc/testsuite/g++.dg/reflect/member15.C | 8 -------- gcc/testsuite/g++.dg/reflect/splice5.C | 6 ++---- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/gcc/testsuite/g++.dg/reflect/member15.C b/gcc/testsuite/g++.dg/reflect/member15.C index 36f12d8b539e..8646eb209fdb 100644 --- a/gcc/testsuite/g++.dg/reflect/member15.C +++ b/gcc/testsuite/g++.dg/reflect/member15.C @@ -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 (); diff --git a/gcc/testsuite/g++.dg/reflect/splice5.C b/gcc/testsuite/g++.dg/reflect/splice5.C index f06e22707859..781448633376 100644 --- a/gcc/testsuite/g++.dg/reflect/splice5.C +++ b/gcc/testsuite/g++.dg/reflect/splice5.C @@ -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
