Skip to content

Commit f59e14d

Browse files
committed
simplify tests
1 parent 5a9c009 commit f59e14d

File tree

2 files changed

+106
-57
lines changed

2 files changed

+106
-57
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
// RUN: %clang_cc1 -std=c++20 %s -Wreorder-init-list -fdiagnostics-parseable-fixits 2>&1 | FileCheck %s
2+
3+
// These tests are from clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp
4+
struct C { int :0, x, :0, y, :0; };
5+
C c = {
6+
.x = 1,
7+
.x = 1,
8+
.y = 1,
9+
.y = 1,
10+
.x = 1,
11+
.x = 1,
12+
};
13+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
14+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
15+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
16+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
17+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".y = 1"
18+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".y = 1"
19+
20+
namespace GH63605 {
21+
struct A {
22+
unsigned x;
23+
unsigned y;
24+
unsigned z;
25+
};
26+
27+
struct B {
28+
unsigned a;
29+
unsigned b;
30+
};
31+
32+
struct : public A, public B {
33+
unsigned : 2;
34+
unsigned a : 6;
35+
unsigned : 1;
36+
unsigned b : 6;
37+
unsigned : 2;
38+
unsigned c : 6;
39+
unsigned d : 1;
40+
unsigned e : 2;
41+
} data = {
42+
{.z=0,
43+
44+
45+
.y=1,
46+
47+
.x=2},
48+
{.b=3,
49+
.a=4},
50+
.e = 1,
51+
52+
.d = 1,
53+
54+
.c = 1,
55+
.b = 1,
56+
.a = 1,
57+
};
58+
}
59+
// CHECK: fix-it:"{{.*}}":{[[@LINE-17]]:4-[[@LINE-17]]:8}:".x=2"
60+
// CHECK: fix-it:"{{.*}}":{[[@LINE-15]]:4-[[@LINE-15]]:8}:".y=1"
61+
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".z=0"
62+
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".a=4"
63+
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".b=3"
64+
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:5-[[@LINE-14]]:11}:".a = 1"
65+
// CHECK: fix-it:"{{.*}}":{[[@LINE-13]]:5-[[@LINE-13]]:11}:".b = 1"
66+
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".c = 1"
67+
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".d = 1"
68+
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".e = 1"
69+
// END tests from clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp
70+
71+
namespace reorder_derived {
72+
struct col {
73+
int r;
74+
int g;
75+
int b;
76+
};
77+
78+
struct point {
79+
float x;
80+
float y;
81+
float z;
82+
};
83+
84+
struct derived : public col, public point {
85+
int z2;
86+
int z1;
87+
};
88+
89+
void test() {
90+
derived a {
91+
{.b = 1, .g = 2, .r = 3},
92+
{ .z = 1, .y=2, .x = 3 },
93+
.z1 = 1,
94+
.z2 = 2,
95+
};
96+
}
97+
// CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:6-[[@LINE-6]]:12}:".r = 3"
98+
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:14-[[@LINE-7]]:20}:".g = 2"
99+
// CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:22-[[@LINE-8]]:28}:".b = 1"
100+
// CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:15-[[@LINE-8]]:19}:".y=2"
101+
// CHECK: fix-it:"{{.*}}":{[[@LINE-9]]:21-[[@LINE-9]]:28}:".z = 1"
102+
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:7-[[@LINE-10]]:13}:".x = 3"
103+
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:5-[[@LINE-10]]:12}:".z2 = 2"
104+
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:5-[[@LINE-10]]:12}:".z1 = 1"
105+
} // namespace reorder_derived

clang/test/SemaCXX/cxx2a-initializer-aggregates.cpp

Lines changed: 1 addition & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: %clang_cc1 -std=c++20 %s -verify=cxx20,expected -Wno-c99-designator -Wno-reorder-init-list -Wno-initializer-overrides
77
// RUN: %clang_cc1 -std=c++20 %s -verify=cxx20,expected,wmissing,wmissing-designated -Wmissing-field-initializers -Wno-c99-designator -Wno-reorder-init-list -Wno-initializer-overrides
88
// RUN: %clang_cc1 -std=c++20 %s -verify=cxx20,expected,wmissing -Wmissing-field-initializers -Wno-missing-designated-field-initializers -Wno-c99-designator -Wno-reorder-init-list -Wno-initializer-overrides
9-
// RUN: %clang_cc1 -std=c++20 -Wreorder-init-list -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s
9+
1010

1111
namespace class_with_ctor {
1212
struct A { // cxx20-note 6{{candidate}}
@@ -38,8 +38,6 @@ A a1 = {
3838
.y = 1, // reorder-note {{previous initialization for field 'y' is here}}
3939
.x = 2 // reorder-error {{ISO C++ requires field designators to be specified in declaration order; field 'y' will be initialized after field 'x'}}
4040
};
41-
// CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:3-[[@LINE-3]]:9}:".x = 2"
42-
// CHECK: fix-it:"{{.*}}":{[[@LINE-3]]:3-[[@LINE-3]]:9}:".y = 1"
4341
int arr[3] = {[1] = 5}; // pedantic-error {{array designators are a C99 extension}}
4442
B b = {.a.x = 0}; // pedantic-error {{nested designators are a C99 extension}}
4543
A a2 = {
@@ -73,12 +71,6 @@ C c = {
7371
.x = 1, // reorder-error {{declaration order}} override-error {{overrides prior initialization}} override-note {{previous}}
7472
.x = 1, // override-error {{overrides prior initialization}}
7573
};
76-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
77-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
78-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
79-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".x = 1"
80-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".y = 1"
81-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:3-[[@LINE-7]]:9}:".y = 1"
8274

8375
struct Foo { int a, b; };
8476

@@ -126,8 +118,6 @@ namespace overload_resolution {
126118
void i() {
127119
h({.x = 1, .y = 2});
128120
h({.y = 1, .x = 2}); // reorder-error {{declaration order}} reorder-note {{previous}}
129-
// CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:8-[[@LINE-1]]:14}:".x = 2"
130-
// CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:16-[[@LINE-2]]:22}:".y = 1"
131121
h({.x = 1}); // expected-error {{ambiguous}}
132122
}
133123

@@ -238,16 +228,6 @@ struct : public A, public B {
238228
.a = 1, // reorder-error {{field 'b' will be initialized after field 'a'}}
239229
};
240230
}
241-
// CHECK: fix-it:"{{.*}}":{[[@LINE-17]]:4-[[@LINE-17]]:8}:".x=2"
242-
// CHECK: fix-it:"{{.*}}":{[[@LINE-15]]:4-[[@LINE-15]]:8}:".y=1"
243-
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".z=0"
244-
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".a=4"
245-
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:4-[[@LINE-14]]:8}:".b=3"
246-
// CHECK: fix-it:"{{.*}}":{[[@LINE-14]]:5-[[@LINE-14]]:11}:".a = 1"
247-
// CHECK: fix-it:"{{.*}}":{[[@LINE-13]]:5-[[@LINE-13]]:11}:".b = 1"
248-
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".c = 1"
249-
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".d = 1"
250-
// CHECK: fix-it:"{{.*}}":{[[@LINE-12]]:5-[[@LINE-12]]:11}:".e = 1"
251231

252232
namespace GH63759 {
253233
struct C {
@@ -268,39 +248,3 @@ void foo() {
268248
//
269249
}
270250
}
271-
272-
namespace reorder_derived {
273-
struct col {
274-
int r;
275-
int g;
276-
int b;
277-
};
278-
279-
struct point {
280-
float x;
281-
float y;
282-
float z;
283-
};
284-
285-
struct lols : public col, public point {
286-
int z2;
287-
int z1;
288-
};
289-
290-
void fosas() {
291-
lols a {
292-
{.b = 1, .g = 2, .r = 3},
293-
{ .z = 1, .y=2, .x = 3 },
294-
.z1 = 1,
295-
.z2 = 2,
296-
};
297-
}
298-
// CHECK: fix-it:"{{.*}}":{[[@LINE-6]]:6-[[@LINE-6]]:12}:".r = 3"
299-
// CHECK: fix-it:"{{.*}}":{[[@LINE-7]]:14-[[@LINE-7]]:20}:".g = 2"
300-
// CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:22-[[@LINE-8]]:28}:".b = 1"
301-
// CHECK: fix-it:"{{.*}}":{[[@LINE-8]]:15-[[@LINE-8]]:19}:".y=2"
302-
// CHECK: fix-it:"{{.*}}":{[[@LINE-9]]:21-[[@LINE-9]]:28}:".z = 1"
303-
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:7-[[@LINE-10]]:13}:".x = 3"
304-
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:5-[[@LINE-10]]:12}:".z2 = 2"
305-
// CHECK: fix-it:"{{.*}}":{[[@LINE-10]]:5-[[@LINE-10]]:12}:".z1 = 1"
306-
} // namespace reorder_derived

0 commit comments

Comments
 (0)