c++: robustify testcase [PR109752]
[official-gcc.git] / gcc / testsuite / g++.dg / cpp1y / nsdmi-aggr15.C
blobd091d693042b5aafc67a38002f84c170cd0303c1
1 // PR c++/100252
2 // { dg-do run { target c++14 } }
4 struct A {
5   int x;
6   int y = x;
7 };
9 struct B {
10   int x = 0;
11   int y = A{x}.y;
14 static void
15 test_b (B b1 = B{}, B b2 = B{1}, B b3 = B{1, 2})
17   if (b1.x != 0 || b1.y != b1.x)
18     __builtin_abort();
19   if (b2.x != 1 || b2.y != b2.x)
20     __builtin_abort();
21   if (b3.x != 1 || b3.y != 2)
22     __builtin_abort();
25 struct C {
26   int x = 0;
27   int y = (true, A{x}.y) + (A{x}.y, 0);
30 static void
31 test_c (C c1 = C{}, C c2 = C{1}, C c3 = C{1, 2})
33   if (c1.x != 0 || c1.y != c1.x)
34     __builtin_abort();
35   if (c2.x != 1 || c2.y != c2.x)
36     __builtin_abort();
37   if (c3.x != 1 || c3.y != 2)
38     __builtin_abort();
41 struct D {
42   int x = 0;
43   int y = (A{x}.y);
46 static void
47 test_d (D d1 = D{}, D d2 = D{1}, D d3 = D{1, 2})
49   if (d1.x != 0 || d1.y != d1.x)
50     __builtin_abort();
51   if (d2.x != 1 || d2.y != d2.x)
52     __builtin_abort();
53   if (d3.x != 1 || d3.y != 2)
54     __builtin_abort();
57 struct E {
58   int x = 0;
59   int y = x ? A{x}.y : A{x}.y;
62 static void
63 test_e (E e1 = E{}, E e2 = E{1}, E e3 = E{1, 2})
65   if (e1.x != 0 || e1.y != e1.x)
66     __builtin_abort();
67   if (e2.x != 1 || e2.y != e2.x)
68     __builtin_abort();
69   if (e3.x != 1 || e3.y != 2)
70     __builtin_abort();
73 int
74 main ()
76   test_b ();
77   test_c ();
78   test_d ();
79   test_e ();