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
|
// RUN: %target-swift-frontend -parse-as-library -module-name Test -validate-tbd-against-ir=missing -unavailable-decl-optimization=none %s -emit-ir | %FileCheck %s --check-prefixes=CHECK,CHECK-NO-STRIP
// RUN: %target-swift-frontend -parse-as-library -module-name Test -validate-tbd-against-ir=missing -unavailable-decl-optimization=complete %s -emit-ir | %FileCheck %s --check-prefixes=CHECK,CHECK-STRIP
// CHECK: s4Test15AvailableStructVMn
// CHECK-NO-STRIP: s4Test17UnavailableStructVMn
// CHECK-STRIP-NOT: s4Test17UnavailableStructVMn
public struct AvailableStruct<T> {
// CHECK-NO-STRIP: s4Test15AvailableStructV19unavailablePropertyxvg
// CHECK-NO-STRIP: s4Test15AvailableStructV19unavailablePropertyxvs
// CHECK-NO-STRIP: s4Test15AvailableStructV19unavailablePropertyxvM
// CHECK-STRIP-NOT: s4Test15AvailableStructV19unavailablePropertyxvg
// CHECK-STRIP-NOT: s4Test15AvailableStructV19unavailablePropertyxvs
// CHECK-STRIP-NOT: s4Test15AvailableStructV19unavailablePropertyxvM
@available(*, unavailable)
public var unavailableProperty: T {
get { fatalError() }
set { fatalError() }
_modify { fatalError() }
}
// CHECK-NO-STRIP: s4Test15AvailableStructV45availablePropertyWithSomeUnavailableAccessorsxvg
// CHECK-NO-STRIP: s4Test15AvailableStructV45availablePropertyWithSomeUnavailableAccessorsxvs
// CHECK-STRIP-NOT: s4Test15AvailableStructV45availablePropertyWithSomeUnavailableAccessorsxvs
public var availablePropertyWithSomeUnavailableAccessors: T {
get { fatalError() }
@available(*, unavailable)
set { fatalError() }
}
// CHECK-NO-STRIP: s4Test15AvailableStructVyACyxGxcfC
// CHECK-STRIP-NOT: s4Test15AvailableStructVyACyxGxcfC
@available(*, unavailable)
public init(_ t: T) { fatalError() }
// CHECK: s4Test15AvailableStructVMa
// CHECK-NO-STRIP: s4Test15AvailableStructV17unavailableMethodyyF
// CHECK-STRIP-NOT: s4Test15AvailableStructV17unavailableMethodyyF
@available(*, unavailable)
public func unavailableMethod() {}
}
@available(*, unavailable)
extension AvailableStruct {
// CHECK-NO-STRIP: s4Test15AvailableStructV28methodInUnavailableExtensionyyF
// CHECK-STRIP-NOT: s4Test15AvailableStructV28methodInUnavailableExtensionyyF
public func methodInUnavailableExtension() {}
}
@available(*, unavailable)
public struct UnavailableStruct<T> {
// CHECK-NO-STRIP: s4Test17UnavailableStructV8propertyxvg
// CHECK-NO-STRIP: s4Test17UnavailableStructV8propertyxvs
// CHECK-NO-STRIP: s4Test17UnavailableStructV8propertyxvM
// CHECK-STRIP-NOT: s4Test17UnavailableStructV8propertyxvg
// CHECK-STRIP-NOT: s4Test17UnavailableStructV8propertyxvs
// CHECK-STRIP-NOT: s4Test17UnavailableStructV8propertyxvM
public var property: T
// CHECK-NO-STRIP: s4Test17UnavailableStructVyACyxGxcfC
// CHECK-NO-STRIP: s4Test17UnavailableStructVMa
// CHECK-STRIP-NOT: s4Test17UnavailableStructVyACyxGxcfC
// CHECK-STRIP-NOT: s4Test17UnavailableStructVMa
public init(_ t: T) {
self.property = t
}
// CHECK-NO-STRIP: s4Test17UnavailableStructV6methodyyF
// CHECK-STRIP-NOT: s4Test17UnavailableStructV6methodyyF
public func method() {}
}
@available(*, unavailable)
extension UnavailableStruct {
// CHECK-NO-STRIP: s4Test17UnavailableStructV15extensionMethodyyF
// CHECK-STRIP-NOT: s4Test17UnavailableStructV15extensionMethodyyF
public func extensionMethod() {}
}
// CHECK-NO-STRIP: s4Test17UnavailableStructVMa
// CHECK-STRIP-NOT: s4Test17UnavailableStructVMa
|