1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
// RUN: %target-swift-frontend -target %target-swift-abi-5.8-triple -print-ast %s | %FileCheck %s --check-prefixes=CHECK,CHECK-PRE-SWIFT5_9
// RUN: %target-swift-frontend -target %target-swift-abi-5.8-triple -application-extension -print-ast %s | %FileCheck %s --check-prefixes=CHECK,CHECK-PRE-SWIFT5_9
// RUN: %target-swift-frontend -target %target-swift-abi-5.8-triple -print-ast %s | %FileCheck %s --check-prefixes=CHECK,CHECK-PRE-SWIFT5_9
// RUN: %target-swift-frontend -target %target-cpu-apple-macosx14 -print-ast %s | %FileCheck %s --check-prefixes=CHECK,CHECK-SWIFT5_9
// REQUIRES: OS=macosx
// CHECK-LABEL: internal enum HasElementsWithAvailability : Hashable
enum HasElementsWithAvailability: Hashable {
// CHECK: case alwaysAvailable
case alwaysAvailable
// CHECK: @available(*, unavailable)
// CHECK-NEXT: case neverAvailable
@available(*, unavailable)
case neverAvailable
// CHECK: @available(macOS, unavailable)
// CHECK-NEXT: case unavailableMacOS
@available(macOS, unavailable)
case unavailableMacOS
// CHECK: @available(macOS, obsoleted: 50)
// CHECK-NEXT: case obsoleted50
@available(macOS, obsoleted: 50)
case obsoleted50
// CHECK: @available(macOS 50, *)
// CHECK-NEXT: case introduced50
@available(macOS, introduced: 50)
case introduced50
// CHECK: @available(macOSApplicationExtension, unavailable)
// CHECK-NEXT: case unavailableMacOSAppExtension
@available(macOSApplicationExtension, unavailable)
case unavailableMacOSAppExtension
// CHECK: @_implements(Equatable, ==(_:_:)) internal static func __derived_enum_equals(_ a: HasElementsWithAvailability, _ b: HasElementsWithAvailability) -> Bool {
// CHECK-NEXT: var index_a: Int
// CHECK-NEXT: switch a {
// CHECK-NEXT: case .alwaysAvailable:
// CHECK-NEXT: index_a = 0
// CHECK-NEXT: case .neverAvailable:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .unavailableMacOS:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .obsoleted50:
// CHECK-NEXT: index_a = 1
// CHECK-NEXT: case .introduced50:
// CHECK-NEXT: index_a = 2
// CHECK-NEXT: case .unavailableMacOSAppExtension:
// CHECK-NEXT: index_a = 3
// CHECK-NEXT: }
// CHECK-NEXT: var index_b: Int
// CHECK-NEXT: switch b {
// CHECK-NEXT: case .alwaysAvailable:
// CHECK-NEXT: index_b = 0
// CHECK-NEXT: case .neverAvailable:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .unavailableMacOS:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .obsoleted50:
// CHECK-NEXT: index_b = 1
// CHECK-NEXT: case .introduced50:
// CHECK-NEXT: index_b = 2
// CHECK-NEXT: case .unavailableMacOSAppExtension:
// CHECK-NEXT: index_b = 3
// CHECK-NEXT: }
// CHECK-NEXT: return index_a == index_b
// CHECK-NEXT: }
// CHECK: internal func hash(into hasher: inout Hasher) {
// CHECK-NEXT: var discriminator: Int
// CHECK-NEXT: switch self {
// CHECK-NEXT: case .alwaysAvailable:
// CHECK-NEXT: discriminator = 0
// CHECK-NEXT: case .neverAvailable:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .unavailableMacOS:
// CHECK-PRE-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached_aeic()
// CHECK-SWIFT5_9-NEXT: _diagnoseUnavailableCodeReached()
// CHECK-NEXT: case .obsoleted50:
// CHECK-NEXT: discriminator = 1
// CHECK-NEXT: case .introduced50:
// CHECK-NEXT: discriminator = 2
// CHECK-NEXT: case .unavailableMacOSAppExtension:
// CHECK-NEXT: discriminator = 3
// CHECK-NEXT: }
// CHECK-NEXT: hasher.combine(discriminator)
// CHECK-NEXT: }
// CHECK: internal var hashValue: Int {
// CHECK-NEXT: get {
// CHECK-NEXT: return _hashValue(for: self)
// CHECK-NEXT: }
// CHECK-NEXT: }
}
|