22// RUN: %target-build-swift -g -lswiftSwiftReflectionTest %s -o %t/reflect_Enum_MultiPayload_degenerate
33// RUN: %target-codesign %t/reflect_Enum_MultiPayload_degenerate
44
5- // RUN: %target-run %target-swift-reflection-test %t/reflect_Enum_MultiPayload_degenerate | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
5+ // RUN: %target-run %target-swift-reflection-test %t/reflect_Enum_MultiPayload_degenerate | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK -%target-ptrsize
66
77// REQUIRES: reflection_test_support
88// REQUIRES: executable_test
99// UNSUPPORTED: use_os_stdlib
1010
11- // Currently broken rdar://104199930
12- // UNSUPPORTED: OS=watchos
13-
1411import SwiftReflectionTest
1512
1613// Only one case has a non-zero-sized payload, so this gets
@@ -22,12 +19,13 @@ case b(Void)
2219
2320reflect ( enum: FooVoid . a ( [ ] ) )
2421
25- // CHECK-64: Reflecting an enum.
26- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
27- // CHECK-64: Type reference:
28- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooVoid)
22+ // CHECK: Reflecting an enum.
23+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
24+ // CHECK: Type reference:
25+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooVoid)
26+
27+ // CHECK: Type info:
2928
30- // CHECK-64: Type info:
3129// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
3230// CHECK-64: (case name=a index=0 offset=0
3331// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -37,25 +35,38 @@ reflect(enum: FooVoid.a([]))
3735// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
3836// CHECK-64: (field name=rawValue offset=0
3937// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
40- // CHECK-64: (case name=b index=1 offset=0
41- // CHECK-64: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
42- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate7FooVoidO
43- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
4438
45- // CHECK-64: Enum value:
46- // CHECK-64: (enum_value name=a index=0
47- // CHECK-64: (bound_generic_struct Swift.Array
48- // CHECK-64: (struct Swift.Int))
49- // CHECK-64: )
39+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
40+ // CHECK-32: (case name=a index=0 offset=0
41+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
42+ // CHECK-32: (field name=_buffer offset=0
43+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
44+ // CHECK-32: (field name=_storage offset=0
45+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
46+ // CHECK-32: (field name=rawValue offset=0
47+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
48+
49+ // CHECK: (case name=b index=1 offset=0
50+ // CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
51+
52+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate7FooVoidO
53+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
54+
55+ // CHECK: Enum value:
56+ // CHECK: (enum_value name=a index=0
57+ // CHECK: (bound_generic_struct Swift.Array
58+ // CHECK: (struct Swift.Int))
59+ // CHECK: )
5060
5161reflect ( enum: FooVoid . b ( ( ) ) )
5262
53- // CHECK-64: Reflecting an enum.
54- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
55- // CHECK-64: Type reference:
56- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooVoid)
63+ // CHECK: Reflecting an enum.
64+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
65+ // CHECK: Type reference:
66+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooVoid)
67+
68+ // CHECK: Type info:
5769
58- // CHECK-64: Type info:
5970// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
6071// CHECK-64: (case name=a index=0 offset=0
6172// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -65,15 +76,26 @@ reflect(enum: FooVoid.b(()))
6576// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
6677// CHECK-64: (field name=rawValue offset=0
6778// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
68- // CHECK-64: (case name=b index=1 offset=0
69- // CHECK-64: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
70- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate7FooVoidO
71- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
7279
73- // CHECK-64: Enum value:
74- // CHECK-64: (enum_value name=b index=1
75- // CHECK-64: (tuple)
76- // CHECK-64: )
80+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
81+ // CHECK-32: (case name=a index=0 offset=0
82+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
83+ // CHECK-32: (field name=_buffer offset=0
84+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
85+ // CHECK-32: (field name=_storage offset=0
86+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
87+ // CHECK-32: (field name=rawValue offset=0
88+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
89+
90+ // CHECK: (case name=b index=1 offset=0
91+ // CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
92+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate7FooVoidO
93+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid
94+
95+ // CHECK: Enum value:
96+ // CHECK: (enum_value name=b index=1
97+ // CHECK: (tuple)
98+ // CHECK: )
7799
78100
79101// Same as above, except the first payload has zero size
@@ -84,12 +106,13 @@ case b([Int])
84106
85107reflect ( enum: FooVoid2 . a ( ( ) ) )
86108
87- // CHECK-64: Reflecting an enum.
88- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
89- // CHECK-64: Type reference:
90- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooVoid2)
109+ // CHECK: Reflecting an enum.
110+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
111+ // CHECK: Type reference:
112+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooVoid2)
113+
114+ // CHECK: Type info:
91115
92- // CHECK-64: Type info:
93116// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
94117// CHECK-64: (case name=b index=0 offset=0
95118// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -99,24 +122,36 @@ reflect(enum: FooVoid2.a(()))
99122// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
100123// CHECK-64: (field name=rawValue offset=0
101124// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
102- // CHECK-64: (case name=a index=1 offset=0
103- // CHECK-64: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
104- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate8FooVoid2O
105- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid2
106125
107- // CHECK-64: Enum value:
108- // CHECK-64: (enum_value name=a index=1
109- // CHECK-64: (tuple)
110- // CHECK-64: )
126+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
127+ // CHECK-32: (case name=b index=0 offset=0
128+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
129+ // CHECK-32: (field name=_buffer offset=0
130+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
131+ // CHECK-32: (field name=_storage offset=0
132+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
133+ // CHECK-32: (field name=rawValue offset=0
134+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
135+
136+ // CHECK: (case name=a index=1 offset=0
137+ // CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
138+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate8FooVoid2O
139+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid2
140+
141+ // CHECK: Enum value:
142+ // CHECK: (enum_value name=a index=1
143+ // CHECK: (tuple)
144+ // CHECK: )
111145
112146reflect ( enum: FooVoid2 . b ( [ ] ) )
113147
114- // CHECK-64: Reflecting an enum.
115- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
116- // CHECK-64: Type reference:
117- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooVoid2)
148+ // CHECK: Reflecting an enum.
149+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
150+ // CHECK: Type reference:
151+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooVoid2)
152+
153+ // CHECK: Type info:
118154
119- // CHECK-64: Type info:
120155// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
121156// CHECK-64: (case name=b index=0 offset=0
122157// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -126,16 +161,27 @@ reflect(enum: FooVoid2.b([]))
126161// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
127162// CHECK-64: (field name=rawValue offset=0
128163// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
129- // CHECK-64: (case name=a index=1 offset=0
130- // CHECK-64: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
131- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate8FooVoid2O
132- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid2
133164
134- // CHECK-64: Enum value:
135- // CHECK-64: (enum_value name=b index=0
136- // CHECK-64: (bound_generic_struct Swift.Array
137- // CHECK-64: (struct Swift.Int))
138- // CHECK-64: )
165+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
166+ // CHECK-32: (case name=b index=0 offset=0
167+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
168+ // CHECK-32: (field name=_buffer offset=0
169+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
170+ // CHECK-32: (field name=_storage offset=0
171+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
172+ // CHECK-32: (field name=rawValue offset=0
173+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
174+
175+ // CHECK: (case name=a index=1 offset=0
176+ // CHECK: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
177+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate8FooVoid2O
178+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooVoid2
179+
180+ // CHECK: Enum value:
181+ // CHECK: (enum_value name=b index=0
182+ // CHECK: (bound_generic_struct Swift.Array
183+ // CHECK: (struct Swift.Int))
184+ // CHECK: )
139185
140186
141187// As above, this is laid out as a single-payload enum
@@ -148,12 +194,13 @@ case b(B)
148194
149195reflect ( enum: FooEmptyStruct . a ( [ ] ) )
150196
151- // CHECK-64: Reflecting an enum.
152- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
153- // CHECK-64: Type reference:
154- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooEmptyStruct)
197+ // CHECK: Reflecting an enum.
198+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
199+ // CHECK: Type reference:
200+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooEmptyStruct)
201+
202+ // CHECK: Type info:
155203
156- // CHECK-64: Type info:
157204// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
158205// CHECK-64: (case name=a index=0 offset=0
159206// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -163,25 +210,37 @@ reflect(enum: FooEmptyStruct.a([]))
163210// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
164211// CHECK-64: (field name=rawValue offset=0
165212// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
166- // CHECK-64: (case name=b index=1 offset=0
167- // CHECK-64: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
168- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
169- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
170213
171- // CHECK-64: Enum value:
172- // CHECK-64: (enum_value name=a index=0
173- // CHECK-64: (bound_generic_struct Swift.Array
174- // CHECK-64: (struct Swift.Int))
175- // CHECK-64: )
214+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
215+ // CHECK-32: (case name=a index=0 offset=0
216+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
217+ // CHECK-32: (field name=_buffer offset=0
218+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
219+ // CHECK-32: (field name=_storage offset=0
220+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
221+ // CHECK-32: (field name=rawValue offset=0
222+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
223+
224+ // CHECK: (case name=b index=1 offset=0
225+ // CHECK: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
226+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
227+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
228+
229+ // CHECK: Enum value:
230+ // CHECK: (enum_value name=a index=0
231+ // CHECK: (bound_generic_struct Swift.Array
232+ // CHECK: (struct Swift.Int))
233+ // CHECK: )
176234
177235reflect ( enum: FooEmptyStruct . b ( B ( ) ) )
178236
179- // CHECK-64: Reflecting an enum.
180- // CHECK-64: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
181- // CHECK-64: Type reference:
182- // CHECK-64: (enum reflect_Enum_MultiPayload_degenerate.FooEmptyStruct)
237+ // CHECK: Reflecting an enum.
238+ // CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
239+ // CHECK: Type reference:
240+ // CHECK: (enum reflect_Enum_MultiPayload_degenerate.FooEmptyStruct)
241+
242+ // CHECK: Type info:
183243
184- // CHECK-64: Type info:
185244// CHECK-64: (multi_payload_enum size=8 alignment=8 stride=8 num_extra_inhabitants=2147483646 bitwise_takable=1
186245// CHECK-64: (case name=a index=0 offset=0
187246// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
@@ -191,22 +250,30 @@ reflect(enum: FooEmptyStruct.b(B()))
191250// CHECK-64: (struct size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1
192251// CHECK-64: (field name=rawValue offset=0
193252// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))))))
194- // CHECK-64: (case name=b index=1 offset=0
195- // CHECK-64: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
196- // CHECK-64: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
197- // CHECK-64: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
198253
199- // CHECK-64: Enum value:
200- // CHECK-64: (enum_value name=b index=1
201- // CHECK-64: (struct reflect_Enum_MultiPayload_degenerate.B)
202- // CHECK-64: )
254+ // CHECK-32: (multi_payload_enum size=4 alignment=4 stride=4 num_extra_inhabitants=4095 bitwise_takable=1
255+ // CHECK-32: (case name=a index=0 offset=0
256+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
257+ // CHECK-32: (field name=_buffer offset=0
258+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
259+ // CHECK-32: (field name=_storage offset=0
260+ // CHECK-32: (struct size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1
261+ // CHECK-32: (field name=rawValue offset=0
262+ // CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))))))
203263
264+ // CHECK: (case name=b index=1 offset=0
265+ // CHECK: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1)))
266+ // CHECK: Mangled name: $s36reflect_Enum_MultiPayload_degenerate14FooEmptyStructO
267+ // CHECK: Demangled name: reflect_Enum_MultiPayload_degenerate.FooEmptyStruct
268+
269+ // CHECK: Enum value:
270+ // CHECK: (enum_value name=b index=1
271+ // CHECK: (struct reflect_Enum_MultiPayload_degenerate.B)
272+ // CHECK: )
204273
205274
206275// TODO: Variations of Foo where `b` payload is class, Bool
207276
208277doneReflecting ( )
209278
210- // CHECK-32: FAIL
211-
212279// CHECK: Done.
0 commit comments