@@ -61,8 +61,9 @@ var a: Int
61
61
62
62
enum OneStructPayload {
63
63
case payloadA( StructInt )
64
- case otherA
65
- case otherB
64
+ case cowboyAlice
65
+ case cowboyBob
66
+ case cowboyCharlie
66
67
}
67
68
68
69
reflect ( enumValue: OneStructPayload . payloadA ( StructInt ( a: 0 ) ) )
@@ -72,12 +73,12 @@ reflect(enumValue: OneStructPayload.payloadA(StructInt(a: 0)))
72
73
// CHECK-NEXT: (enum reflect_Enum_value.OneStructPayload)
73
74
// CHECK-NEXT: Value: .payloadA(_)
74
75
75
- reflect ( enumValue: OneStructPayload . otherA )
76
+ reflect ( enumValue: OneStructPayload . cowboyCharlie )
76
77
77
78
// CHECK: Reflecting an enum value.
78
79
// CHECK-NEXT: Type reference:
79
80
// CHECK-NEXT: (enum reflect_Enum_value.OneStructPayload)
80
- // CHECK-NEXT: Value: .otherA
81
+ // CHECK-NEXT: Value: .cowboyCharlie
81
82
82
83
@objc class ObjCClass : NSObject {
83
84
var a : Int = 0
@@ -173,14 +174,14 @@ reflect(enumValue: Optional<Optional<OneSwiftClassPayload>>.some(.none))
173
174
// CHECK-NEXT: (enum reflect_Enum_value.OneSwiftClassPayload)))
174
175
// CHECK-NEXT: Value: .some(.none)
175
176
176
- reflect ( enumValue: Optional< Optional< OneSwiftClassPayload>>. some( . some( . otherA ) ) )
177
+ reflect ( enumValue: Optional< Optional< OneSwiftClassPayload>>. some( . some( . otherC ) ) )
177
178
178
179
// CHECK: Reflecting an enum value.
179
180
// CHECK-NEXT: Type reference:
180
181
// CHECK-NEXT: (bound_generic_enum Swift.Optional
181
182
// CHECK-NEXT: (bound_generic_enum Swift.Optional
182
183
// CHECK-NEXT: (enum reflect_Enum_value.OneSwiftClassPayload)))
183
- // CHECK-NEXT: Value: .some(.some(.otherA ))
184
+ // CHECK-NEXT: Value: .some(.some(.otherC ))
184
185
185
186
reflect ( enumValue: Optional< Optional< OneSwiftClassPayload>>. some( . some( . otherE) ) )
186
187
@@ -211,12 +212,12 @@ case otherB
211
212
case payloadA( MixedStruct )
212
213
}
213
214
214
- reflect ( enumValue: OneMixedStructPayload . otherA )
215
+ reflect ( enumValue: OneMixedStructPayload . otherB )
215
216
216
217
// CHECK: Reflecting an enum value.
217
218
// CHECK-NEXT: Type reference:
218
219
// CHECK-NEXT: (enum reflect_Enum_value.OneMixedStructPayload)
219
- // CHECK-NEXT: Value: .otherA
220
+ // CHECK-NEXT: Value: .otherB
220
221
221
222
reflect ( enumValue: OneMixedStructPayload . payloadA ( MixedStruct ( ) ) )
222
223
@@ -247,7 +248,138 @@ reflect(enumValue: OneNestedPayload.alternateB)
247
248
// CHECK-NEXT: (enum reflect_Enum_value.OneNestedPayload)
248
249
// CHECK-NEXT: Value: .alternateB
249
250
250
- // XXX TODO: enum with tuple payload, enum with optional payload, indirect enum, enum with closure/function payload XXX
251
+
252
+ enum OneTuplePayload {
253
+ case holderA( ( i: Int , c: SwiftClass ) )
254
+ case emptyA
255
+ case emptyB
256
+ case emptyC
257
+ }
258
+
259
+ reflect ( enumValue: OneTuplePayload . holderA ( ( i: 7 , c: SwiftClass ( ) ) ) )
260
+
261
+ // CHECK: Reflecting an enum value.
262
+ // CHECK-NEXT: Type reference:
263
+ // CHECK-NEXT: (enum reflect_Enum_value.OneTuplePayload)
264
+ // CHECK-NEXT: Value: .holderA(_)
265
+
266
+ reflect ( enumValue: OneTuplePayload . emptyB)
267
+
268
+ // CHECK: Reflecting an enum value.
269
+ // CHECK-NEXT: Type reference:
270
+ // CHECK-NEXT: (enum reflect_Enum_value.OneTuplePayload)
271
+ // CHECK-NEXT: Value: .emptyB
272
+
273
+ func foo( ) -> Int { return 7 ; }
274
+
275
+ enum OneFunctionPayload {
276
+ case cargoA( ( ) -> Int )
277
+ case alternateA
278
+ case alternateB
279
+ case alternateC
280
+ }
281
+
282
+ reflect ( enumValue: OneFunctionPayload . cargoA ( foo) )
283
+
284
+ // CHECK: Reflecting an enum value.
285
+ // CHECK-NEXT: Type reference:
286
+ // CHECK-NEXT: (enum reflect_Enum_value.OneFunctionPayload)
287
+ // CHECK-NEXT: Value: .cargoA(_)
288
+
289
+ reflect ( enumValue: OneFunctionPayload . alternateC)
290
+
291
+ // CHECK: Reflecting an enum value.
292
+ // CHECK-NEXT: Type reference:
293
+ // CHECK-NEXT: (enum reflect_Enum_value.OneFunctionPayload)
294
+ // CHECK-NEXT: Value: .alternateC
295
+
296
+ func tester1( ) {
297
+ let a = 7
298
+
299
+ func foo( ) -> Int { return a; }
300
+
301
+ enum OneClosurePayload {
302
+ case cargoA( ( ) -> Int )
303
+ case alternateA
304
+ case alternateB
305
+ case alternateC
306
+ }
307
+
308
+ reflect ( enumValue: OneClosurePayload . cargoA ( foo) )
309
+
310
+ // CHECK: Reflecting an enum value.
311
+ // CHECK-NEXT: Type reference:
312
+
313
+ // XXX TODO: Figure out why the type reference is dumped differently sometimes:
314
+ // XXXX-NEXT: (nominal with unmangled suffix
315
+ // XXXX-NEXT: (enum OneClosurePayload #1 in reflect_Enum_value.tester1() -> ())
316
+
317
+ // CHECK: Value: .cargoA(_)
318
+
319
+ reflect ( enumValue: OneClosurePayload . alternateB)
320
+
321
+ // CHECK: Reflecting an enum value.
322
+ // CHECK-NEXT: Type reference:
323
+
324
+ // XXX TODO: Figure out why the type reference is dumped differently sometimes:
325
+ // XXXX-NEXT: (nominal with unmangled suffix
326
+ // XXXX-NEXT: (enum OneClosurePayload #1 in reflect_Enum_value.tester1() -> ())
327
+
328
+ // CHECK: Value: .alternateB
329
+ }
330
+
331
+ tester1 ( )
332
+
333
+
334
+ enum OneOptionalPayload {
335
+ case boxA( Optional < Int > )
336
+ case unboxA
337
+ case unboxB
338
+ case unboxC
339
+ case unboxD
340
+ case unboxE
341
+ }
342
+
343
+ reflect ( enumValue: OneOptionalPayload . boxA ( 7 ) )
344
+
345
+ // CHECK: Reflecting an enum value.
346
+ // CHECK-NEXT: Type reference:
347
+ // CHECK-NEXT: (enum reflect_Enum_value.OneOptionalPayload)
348
+ // CHECK-NEXT: Value: .boxA(.some(_))
349
+
350
+ reflect ( enumValue: OneOptionalPayload . unboxE)
351
+
352
+ // CHECK: Reflecting an enum value.
353
+ // CHECK-NEXT: Type reference:
354
+ // CHECK-NEXT: (enum reflect_Enum_value.OneOptionalPayload)
355
+ // CHECK-NEXT: Value: .unboxE
356
+
357
+ indirect enum OneIndirectPayload {
358
+ case child( OneIndirectPayload )
359
+ case leafA
360
+ case leafB
361
+ case leafC
362
+ case leafD
363
+ case leafE
364
+ case leafF
365
+ }
366
+
367
+ reflect ( enumValue: OneIndirectPayload . child ( . leafF) )
368
+
369
+ // CHECK: Reflecting an enum value.
370
+ // CHECK-NEXT: Type reference:
371
+ // CHECK-NEXT: (enum reflect_Enum_value.OneIndirectPayload)
372
+ // CHECK-NEXT: Value: .child(_)
373
+
374
+ reflect ( enumValue: OneIndirectPayload . leafF)
375
+
376
+ // CHECK: Reflecting an enum value.
377
+ // CHECK-NEXT: Type reference:
378
+ // CHECK-NEXT: (enum reflect_Enum_value.OneIndirectPayload)
379
+ // CHECK-NEXT: Value: .leafF
380
+
381
+
382
+ // XXX TODO: test enum with thin function payload XXX
251
383
252
384
doneReflecting ( )
253
385
// CHECK: Done.
0 commit comments