Skip to content

Commit a6ff813

Browse files
committed
Make some tests work better on varying platforms.
In particular, the exactly internal layout of Array<> is quite different between macOS and Linux, which makes it impractical for use in tests like this. An empty class is still a reference and doesn't introduce so many complications.
1 parent ef0eafc commit a6ff813

File tree

2 files changed

+30
-139
lines changed

2 files changed

+30
-139
lines changed

validation-test/Reflection/reflect_Enum_MultiPayload_degenerate.swift

Lines changed: 30 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,16 @@
1010

1111
import SwiftReflectionTest
1212

13+
class C {}
14+
1315
// Only one case has a non-zero-sized payload, so this gets
1416
// laid out the same as a single-payload enum
1517
enum FooVoid {
16-
case a([Int])
18+
case a(C)
1719
case b(Void)
1820
}
1921

20-
reflect(enum: FooVoid.a([]))
22+
reflect(enum: FooVoid.a(C()))
2123

2224
// CHECK: Reflecting an enum.
2325
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
@@ -27,29 +29,17 @@ reflect(enum: FooVoid.a([]))
2729
// CHECK: Type info:
2830

2931
// Note: MemoryLayout<FooVoid> says that this really is size=8, alignment=8, stride=8
30-
// Explanation: [Int] is a pointer, so this enum can use NULL to represent the other case
32+
// Explanation: C is a pointer, so this enum can use NULL to represent the other case
3133
// Aside: In TypeLowering.cpp, enum FooVoid does not have a FixedDescriptor even though
3234
// its not generic. This is why we check for having only a single payload first.
3335

3436
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
3537
// CHECK-64: (case name=a index=0 offset=0
36-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
37-
// CHECK-64: (field name=_buffer offset=0
38-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
39-
// CHECK-64: (field name=_storage offset=0
40-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
41-
// CHECK-64: (field name=rawValue offset=0
42-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
38+
// CHECK-64: (reference kind=strong refcounting=native))
4339

4440
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
4541
// CHECK-32: (case name=a index=0 offset=0
46-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
47-
// CHECK-32: (field name=_buffer offset=0
48-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
49-
// CHECK-32: (field name=_storage offset=0
50-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
51-
// CHECK-32: (field name=rawValue offset=0
52-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
42+
// CHECK-32: (reference kind=strong refcounting=native))
5343

5444
// CHECK: (case name=b index=1 offset=0
5545
// CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
@@ -58,10 +48,9 @@ reflect(enum: FooVoid.a([]))
5848
// CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
5949

6050
// CHECK: Enum value:
61-
// CHECK: (enum_value name=a index=0
62-
// CHECK: (bound_generic_struct Swift.Array
63-
// CHECK: (struct Swift.Int))
64-
// CHECK: )
51+
// CHECK-NEXT: (enum_value name=a index=0
52+
// CHECK-NEXT: (class reflect_Enum_MultiPayload_degenerate.C)
53+
// CHECK-NEXT: )
6554

6655
reflect(enum: FooVoid.b(()))
6756

@@ -72,41 +61,19 @@ reflect(enum: FooVoid.b(()))
7261

7362
// CHECK: Type info:
7463

75-
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
76-
// CHECK-64: (case name=a index=0 offset=0
77-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
78-
// CHECK-64: (field name=_buffer offset=0
79-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
80-
// CHECK-64: (field name=_storage offset=0
81-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
82-
// CHECK-64: (field name=rawValue offset=0
83-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
84-
85-
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
86-
// CHECK-32: (case name=a index=0 offset=0
87-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
88-
// CHECK-32: (field name=_buffer offset=0
89-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
90-
// CHECK-32: (field name=_storage offset=0
91-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
92-
// CHECK-32: (field name=rawValue offset=0
93-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
94-
95-
// CHECK: (case name=b index=1 offset=0
96-
// CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
9764
// CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate7FooVoidO
9865
// CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
9966

10067
// CHECK: Enum value:
101-
// CHECK: (enum_value name=b index=1
102-
// CHECK: (tuple)
103-
// CHECK: )
68+
// CHECK-NEXT: (enum_value name=b index=1
69+
// CHECK-NEXT: (tuple)
70+
// CHECK-NEXT: )
10471

10572

10673
// Same as above, except the first payload has zero size
10774
enum FooVoid2 {
10875
case a(Void)
109-
case b([Int])
76+
case b(C)
11077
}
11178

11279
reflect(enum: FooVoid2.a(()))
@@ -120,23 +87,11 @@ reflect(enum: FooVoid2.a(()))
12087

12188
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
12289
// CHECK-64: (case name=b index=0 offset=0
123-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
124-
// CHECK-64: (field name=_buffer offset=0
125-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
126-
// CHECK-64: (field name=_storage offset=0
127-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
128-
// CHECK-64: (field name=rawValue offset=0
129-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
90+
// CHECK-64: (reference kind=strong refcounting=native))
13091

13192
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
13293
// CHECK-32: (case name=b index=0 offset=0
133-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
134-
// CHECK-32: (field name=_buffer offset=0
135-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
136-
// CHECK-32: (field name=_storage offset=0
137-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
138-
// CHECK-32: (field name=rawValue offset=0
139-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
94+
// CHECK-32: (reference kind=strong refcounting=native))
14095

14196
// CHECK: (case name=a index=1 offset=0
14297
// CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
@@ -148,56 +103,29 @@ reflect(enum: FooVoid2.a(()))
148103
// CHECK: (tuple)
149104
// CHECK: )
150105

151-
reflect(enum: FooVoid2.b([]))
106+
reflect(enum: FooVoid2.b(C()))
152107

153108
// CHECK: Reflecting an enum.
154-
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
155-
// CHECK: Type reference:
156-
// CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooVoid2)
157109

158110
// CHECK: Type info:
159-
160-
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
161-
// CHECK-64: (case name=b index=0 offset=0
162-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
163-
// CHECK-64: (field name=_buffer offset=0
164-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
165-
// CHECK-64: (field name=_storage offset=0
166-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
167-
// CHECK-64: (field name=rawValue offset=0
168-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
169-
170-
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
171-
// CHECK-32: (case name=b index=0 offset=0
172-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
173-
// CHECK-32: (field name=_buffer offset=0
174-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
175-
// CHECK-32: (field name=_storage offset=0
176-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
177-
// CHECK-32: (field name=rawValue offset=0
178-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
179-
180-
// CHECK: (case name=a index=1 offset=0
181-
// CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
182111
// CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate8FooVoid2O
183112
// CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid2
184113

185114
// CHECK: Enum value:
186-
// CHECK: (enum_value name=b index=0
187-
// CHECK: (bound_generic_struct Swift.Array
188-
// CHECK: (struct Swift.Int))
189-
// CHECK: )
115+
// CHECK-NEXT: (enum_value name=b index=0
116+
// CHECK-NEXT: (class reflect_Enum_MultiPayload_degenerate.C)
117+
// CHECK-NEXT: )
190118

191119

192120
// As above, this is laid out as a single-payload enum
193121
// because the `b` case payload has zero size
194122
struct B {}
195123
enum FooEmptyStruct {
196-
case a([Int])
124+
case a(C)
197125
case b(B)
198126
}
199127

200-
reflect(enum: FooEmptyStruct.a([]))
128+
reflect(enum: FooEmptyStruct.a(C()))
201129

202130
// CHECK: Reflecting an enum.
203131
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
@@ -208,34 +136,21 @@ reflect(enum: FooEmptyStruct.a([]))
208136

209137
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
210138
// CHECK-64: (case name=a index=0 offset=0
211-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
212-
// CHECK-64: (field name=_buffer offset=0
213-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
214-
// CHECK-64: (field name=_storage offset=0
215-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
216-
// CHECK-64: (field name=rawValue offset=0
217-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
139+
// CHECK-64: (reference kind=strong refcounting=native))
218140

219141
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
220142
// CHECK-32: (case name=a index=0 offset=0
221-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
222-
// CHECK-32: (field name=_buffer offset=0
223-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
224-
// CHECK-32: (field name=_storage offset=0
225-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
226-
// CHECK-32: (field name=rawValue offset=0
227-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
143+
// CHECK-32: (reference kind=strong refcounting=native))
228144

229145
// CHECK: (case name=b index=1 offset=0
230146
// CHECK: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
231147
// CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
232148
// CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
233149

234150
// CHECK: Enum value:
235-
// CHECK: (enum_value name=a index=0
236-
// CHECK: (bound_generic_struct Swift.Array
237-
// CHECK: (struct Swift.Int))
238-
// CHECK: )
151+
// CHECK-NEXT: (enum_value name=a index=0
152+
// CHECK-NEXT: (class reflect_Enum_MultiPayload_degenerate.C)
153+
// CHECK-NEXT: )
239154

240155
reflect(enum: FooEmptyStruct.b(B()))
241156

@@ -246,36 +161,13 @@ reflect(enum: FooEmptyStruct.b(B()))
246161

247162
// CHECK: Type info:
248163

249-
// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit-1]] bitwise_takable=1
250-
// CHECK-64: (case name=a index=0 offset=0
251-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
252-
// CHECK-64: (field name=_buffer offset=0
253-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
254-
// CHECK-64: (field name=_storage offset=0
255-
// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1
256-
// CHECK-64: (field name=rawValue offset=0
257-
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=[[#num_extra_inhabitants_64bit]] bitwise_takable=1))))))))
258-
259-
// CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
260-
// CHECK-32: (case name=a index=0 offset=0
261-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
262-
// CHECK-32: (field name=_buffer offset=0
263-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
264-
// CHECK-32: (field name=_storage offset=0
265-
// CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
266-
// CHECK-32: (field name=rawValue offset=0
267-
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
268-
269-
// CHECK: (case name=b index=1 offset=0
270-
// CHECK: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
271164
// CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
272165
// CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
273166

274167
// CHECK: Enum value:
275-
// CHECK: (enum_value name=b index=1
276-
// CHECK: (struct reflect_Enum_MultiPayload_degenerate.B)
277-
// CHECK: )
278-
168+
// CHECK-NEXT: (enum_value name=b index=1
169+
// CHECK-NEXT: (struct reflect_Enum_MultiPayload_degenerate.B)
170+
// CHECK-NEXT: )
279171

280172
// TODO: Variations of Foo where `b` payload is class, Bool
281173

validation-test/Reflection/reflect_Enum_MultiPayload_generic8.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
// UNSUPPORTED: use_os_stdlib
1010

1111
import SwiftReflectionTest
12-
import Darwin
1312

1413
struct S<T> { var t: T }
1514

0 commit comments

Comments
 (0)