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

123 lines
4.3 KiB
Swift

// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
// RUN: -enable-experimental-feature CustomAvailability \
// RUN: -import-bridging-header %S/Inputs/AvailabilityDomains.h \
// RUN: | %FileCheck %s
// REQUIRES: swift_feature_CustomAvailability
// 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 @available_in_enabled_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @unavailable_in_enabled_domain
if #available(EnabledDomain) {
available_in_enabled_domain()
} else {
unavailable_in_enabled_domain()
}
}
// 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 @unavailable_in_enabled_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @available_in_enabled_domain
if #unavailable(EnabledDomain) {
unavailable_in_enabled_domain()
} else {
available_in_enabled_domain()
}
}
// 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 @available_in_disabled_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @unavailable_in_disabled_domain
if #available(DisabledDomain) {
available_in_disabled_domain()
} else {
unavailable_in_disabled_domain()
}
}
// 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 @unavailable_in_disabled_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @available_in_disabled_domain
if #unavailable(DisabledDomain) {
unavailable_in_disabled_domain()
} else {
available_in_disabled_domain()
}
}
// 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 @available_in_dynamic_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @unavailable_in_dynamic_domain
if #available(DynamicDomain) {
available_in_dynamic_domain()
} else {
unavailable_in_dynamic_domain()
}
}
// 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 @unavailable_in_dynamic_domain
// CHECK: [[FALSE_BB]]:
// CHECK: function_ref @available_in_dynamic_domain
if #unavailable(DynamicDomain) {
unavailable_in_dynamic_domain()
} else {
available_in_dynamic_domain()
}
}
// CHECK: end sil function '$s4Test30testIfUnavailableDynamicDomainyyF'