@@ -378,6 +378,107 @@ reflect(enumValue: OneIndirectPayload.leafF)
378
378
// CHECK-NEXT: (enum reflect_Enum_value.OneIndirectPayload)
379
379
// CHECK-NEXT: Value: .leafF
380
380
381
+ enum MultiPayload {
382
+ case stampA
383
+ case envelopeA( Int64 )
384
+ case stampB
385
+ case envelopeB( Double )
386
+ case stampC
387
+ case envelopeC( ( Int32 , Int32 ) )
388
+ case stampD
389
+ case stampE
390
+ }
391
+
392
+ enum SinglePayloadEnumWithMultiPayloadEnumPayload {
393
+ case payloadA( MultiPayload )
394
+ case alsoA
395
+ case alsoB
396
+ case alsoC
397
+ case alsoD
398
+ }
399
+
400
+ reflect ( enumValue: SinglePayloadEnumWithMultiPayloadEnumPayload . payloadA ( . stampB) )
401
+
402
+ // CHECK: Reflecting an enum value.
403
+ // CHECK-NEXT: Type reference:
404
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithMultiPayloadEnumPayload)
405
+ // CHECK-NEXT: Value: .payloadA(.stampB)
406
+
407
+ reflect ( enumValue: SinglePayloadEnumWithMultiPayloadEnumPayload . payloadA ( . envelopeC( ( 1 , 2 ) ) ) )
408
+
409
+ // CHECK: Reflecting an enum value.
410
+ // CHECK-NEXT: Type reference:
411
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithMultiPayloadEnumPayload)
412
+ // CHECK-NEXT: Value: .payloadA(.envelopeC(_))
413
+
414
+ reflect ( enumValue: SinglePayloadEnumWithMultiPayloadEnumPayload . alsoC)
415
+
416
+ // CHECK: Reflecting an enum value.
417
+ // CHECK-NEXT: Type reference:
418
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithMultiPayloadEnumPayload)
419
+ // CHECK-NEXT: Value: .alsoC
420
+
421
+ reflect ( enumValue: Optional< Optional< SinglePayloadEnumWithMultiPayloadEnumPayload>>. some( . none) )
422
+
423
+ // CHECK: Reflecting an enum value.
424
+ // CHECK-NEXT: Type reference:
425
+ // CHECK-NEXT: (bound_generic_enum Swift.Optional
426
+ // CHECK-NEXT: (bound_generic_enum Swift.Optional
427
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithMultiPayloadEnumPayload)))
428
+ // CHECK-NEXT: Value: .some(.none)
429
+
430
+ enum SmallMultiPayload {
431
+ case stampA
432
+ case envelopeA( Int8 )
433
+ case stampB
434
+ case envelopeB( Int16 )
435
+ case stampC
436
+ case envelopeC( ( UInt8 , Int8 ) )
437
+ case stampD
438
+ case stampE
439
+ }
440
+
441
+ enum SinglePayloadEnumWithSmallMultiPayloadEnumPayload {
442
+ case payloadA( SmallMultiPayload )
443
+ case alsoA
444
+ case alsoB
445
+ case alsoC
446
+ case alsoD
447
+ }
448
+
449
+ reflect ( enumValue: SinglePayloadEnumWithSmallMultiPayloadEnumPayload . payloadA ( . stampB) )
450
+
451
+ // CHECK: Reflecting an enum value.
452
+ // CHECK-NEXT: Type reference:
453
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithSmallMultiPayloadEnumPayload)
454
+ // CHECK-NEXT: Value: .payloadA(.stampB)
455
+
456
+ reflect ( enumValue: SinglePayloadEnumWithSmallMultiPayloadEnumPayload . payloadA ( . envelopeC( ( 1 , 2 ) ) ) )
457
+
458
+ // CHECK: Reflecting an enum value.
459
+ // CHECK-NEXT: Type reference:
460
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithSmallMultiPayloadEnumPayload)
461
+ // CHECK-NEXT: Value: .payloadA(.envelopeC(_))
462
+
463
+ reflect ( enumValue: SinglePayloadEnumWithSmallMultiPayloadEnumPayload . alsoC)
464
+
465
+ // CHECK: Reflecting an enum value.
466
+ // CHECK-NEXT: Type reference:
467
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithSmallMultiPayloadEnumPayload)
468
+ // CHECK-NEXT: Value: .alsoC
469
+
470
+ reflect ( enumValue: Optional< Optional< SinglePayloadEnumWithSmallMultiPayloadEnumPayload>>. some( . none) )
471
+
472
+ // CHECK: Reflecting an enum value.
473
+ // CHECK-NEXT: Type reference:
474
+ // CHECK-NEXT: (bound_generic_enum Swift.Optional
475
+ // CHECK-NEXT: (bound_generic_enum Swift.Optional
476
+ // CHECK-NEXT: (enum reflect_Enum_value.SinglePayloadEnumWithSmallMultiPayloadEnumPayload)))
477
+ // CHECK-NEXT: Value: .some(.none)
478
+
479
+
480
+ // XXX TODO: Multipayload enums with pointer payloads
481
+
381
482
382
483
// XXX TODO: test enum with thin function payload XXX
383
484
0 commit comments