// RUN: %empty-directory(%t) // RUN: %target-build-swift -lswiftSwiftReflectionTest %s -o %t/reflect_Enum_MultiPayload_value // RUN: %target-codesign %t/reflect_Enum_MultiPayload_value // RUN: %target-run %target-swift-reflection-test %t/reflect_Enum_MultiPayload_value | tee /dev/stderr | %FileCheck %s --check-prefix=CHECK --check-prefix=X%target-ptrsize --dump-input=fail // REQUIRES: objc_interop // REQUIRES: executable_test // UNSUPPORTED: use_os_stdlib import SwiftReflectionTest class ClassA { let a = 7 } class ClassB { let b = 8 } enum Either { case left(T) case right(U) } reflect(enumValue: Either.left(7)) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double)) // CHECK-NEXT: Value: .left(_) reflect(enumValue: Either.right(1.0)) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double)) // CHECK-NEXT: Value: .right(_) reflect(enumValue: Either?.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double))) // CHECK-NEXT: Value: .none reflect(enumValue: Either??.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double)))) // CHECK-NEXT: Value: .none reflect(enumValue: Either???.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double))))) // CHECK-NEXT: Value: .none reflect(enumValue: Either????.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (struct Swift.Int) // CHECK-NEXT: (struct Swift.Double)))))) // CHECK-NEXT: Value: .none reflect(enumValue: Either.left(ClassA())) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .left(_) reflect(enumValue: Either.right(ClassB())) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .right(_) reflect(enumValue: Either?.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .none reflect(enumValue: Either??.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .none reflect(enumValue: Either???.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .none reflect(enumValue: Either????.none) // CHECK: Reflecting an enum value. // CHECK-NEXT: Type reference: // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum Swift.Optional // CHECK-NEXT: (bound_generic_enum reflect_Enum_MultiPayload_value.Either // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassA) // CHECK-NEXT: (class reflect_Enum_MultiPayload_value.ClassB)) // CHECK-NEXT: Value: .none doneReflecting() // CHECK: Done.