Files
swift-mirror/test/SILGen/availability_query_custom_domains.swift

143 lines
4.9 KiB
Swift

// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -define-enabled-availability-domain EnabledDomain \
// RUN: -define-disabled-availability-domain DisabledDomain \
// RUN: -define-dynamic-availability-domain DynamicDomain \
// RUN: | %FileCheck %s
// REQUIRES: swift_feature_CustomAvailability
@available(EnabledDomain)
public func availableInEnabledDomain() { }
@available(EnabledDomain, unavailable)
public func unavailableInEnabledDomain() { }
@available(DisabledDomain)
public func availableInDisabledDomain() { }
@available(DisabledDomain, unavailable)
public func unavailableInDisabledDomain() { }
@available(DynamicDomain)
public func availableInDynamicDomain() { }
@available(DynamicDomain, unavailable)
public func unavailableInDynamicDomain() { }
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableEnabledDomainyyF : $@convention(thin) () -> ()
public func testIfAvailableEnabledDomain() {
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test24availableInEnabledDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test26unavailableInEnabledDomainyyF
if #available(EnabledDomain) {
availableInEnabledDomain()
} else {
unavailableInEnabledDomain()
}
}
// CHECK: end sil function '$s4Test28testIfAvailableEnabledDomainyyF'
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableEnabledDomainyyF : $@convention(thin) () -> ()
public func testIfUnavailableEnabledDomain() {
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test26unavailableInEnabledDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test24availableInEnabledDomainyyF
if #unavailable(EnabledDomain) {
unavailableInEnabledDomain()
} else {
availableInEnabledDomain()
}
}
// CHECK: end sil function '$s4Test30testIfUnavailableEnabledDomainyyF'
// CHECK-LABEL: sil{{.*}}$s4Test29testIfAvailableDisabledDomainyyF : $@convention(thin) () -> ()
public func testIfAvailableDisabledDomain() {
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test25availableInDisabledDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test27unavailableInDisabledDomainyyF
if #available(DisabledDomain) {
availableInDisabledDomain()
} else {
unavailableInDisabledDomain()
}
}
// CHECK: end sil function '$s4Test29testIfAvailableDisabledDomainyyF'
// CHECK-LABEL: sil{{.*}}$s4Test31testIfUnavailableDisabledDomainyyF : $@convention(thin) () -> ()
public func testIfUnavailableDisabledDomain() {
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test27unavailableInDisabledDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test25availableInDisabledDomainyyF
if #unavailable(DisabledDomain) {
unavailableInDisabledDomain()
} else {
availableInDisabledDomain()
}
}
// CHECK: end sil function '$s4Test31testIfUnavailableDisabledDomainyyF'
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableDynamicDomainyyF : $@convention(thin) () -> ()
public func testIfAvailableDynamicDomain() {
// FIXME: [availability] Call dynamic domain predicate function
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test24availableInDynamicDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test26unavailableInDynamicDomainyyF
if #available(DynamicDomain) {
availableInDynamicDomain()
} else {
unavailableInDynamicDomain()
}
}
// CHECK: end sil function '$s4Test28testIfAvailableDynamicDomainyyF'
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableDynamicDomainyyF : $@convention(thin) () -> ()
public func testIfUnavailableDynamicDomain() {
// FIXME: [availability] Call dynamic domain predicate function
// CHECK: bb0:
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
// CHECK: [[TRUE_BB]]:
// CHECK: function_ref @$s4Test26unavailableInDynamicDomainyyF
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @$s4Test24availableInDynamicDomainyyF
if #unavailable(DynamicDomain) {
unavailableInDynamicDomain()
} else {
availableInDynamicDomain()
}
}
// CHECK: end sil function '$s4Test30testIfUnavailableDynamicDomainyyF'