mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
62 lines
2.5 KiB
Swift
62 lines
2.5 KiB
Swift
// RUN: %target-swift-emit-irgen -module-name Test %s -verify \
|
|
// RUN: -enable-experimental-feature CustomAvailability \
|
|
// RUN: -import-bridging-header %S/Inputs/AvailabilityDomains.h \
|
|
// RUN: -Onone | %FileCheck %s --check-prefixes=CHECK,CHECK-O-NONE
|
|
|
|
// RUN: %target-swift-emit-irgen -module-name Test %s -verify \
|
|
// RUN: -enable-experimental-feature CustomAvailability \
|
|
// RUN: -import-bridging-header %S/Inputs/AvailabilityDomains.h \
|
|
// RUN: -O | %FileCheck %s --check-prefixes=CHECK,CHECK-O
|
|
|
|
// REQUIRES: swift_feature_CustomAvailability
|
|
|
|
// CHECK-LABEL: define {{.*}}swiftcc void @"$s4Test24ifAvailableEnabledDomainyyF"()
|
|
// CHECK: call void @available_in_enabled_domain()
|
|
// CHECK-NOT: call void @unavailable_in_enabled_domain()
|
|
public func ifAvailableEnabledDomain() {
|
|
if #available(EnabledDomain) {
|
|
available_in_enabled_domain()
|
|
} else {
|
|
unavailable_in_enabled_domain()
|
|
}
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}}swiftcc void @"$s4Test25ifAvailableDisabledDomainyyF"()
|
|
// CHECK-NOT: call void @available_in_disabled_domain()
|
|
// CHECK: call void @unavailable_in_disabled_domain()
|
|
public func ifAvailableDisabledDomain() {
|
|
if #available(DisabledDomain) {
|
|
available_in_disabled_domain()
|
|
} else {
|
|
unavailable_in_disabled_domain()
|
|
}
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}}swiftcc void @"$s4Test24ifAvailableDynamicDomainyyF"()
|
|
// CHECK: entry:
|
|
// CHECK-O-NONE: [[QUERY_RESULT:%.*]] = call swiftcc i1 @"$sSC33__swift_DynamicDomain_isAvailableBi1_yF"()
|
|
// CHECK-O: [[QUERY_RESULT:%.*]] = call {{.*}}i1 @__DynamicDomain_isAvailable()
|
|
// CHECK: br i1 [[QUERY_RESULT]], label %[[TRUE_LABEL:.*]], label %[[FALSE_LABEL:.*]]
|
|
// CHECK: [[TRUE_LABEL]]:
|
|
// CHECK: call void @available_in_dynamic_domain()
|
|
// CHECK: [[FALSE_LABEL]]:
|
|
// CHECK: call void @unavailable_in_dynamic_domain()
|
|
public func ifAvailableDynamicDomain() {
|
|
if #available(DynamicDomain) {
|
|
available_in_dynamic_domain()
|
|
} else {
|
|
unavailable_in_dynamic_domain()
|
|
}
|
|
}
|
|
|
|
// CHECK-O-NONE-LABEL: define {{.*}}swiftcc i1 @"$sSC33__swift_DynamicDomain_isAvailableBi1_yF"()
|
|
// CHECK-O-NONE: entry:
|
|
// CHECK-O-NONE: [[CALL:%.*]] = call {{.*}}i1 @__DynamicDomain_isAvailable()
|
|
// CHECK-O-NONE: ret i1 [[CALL]]
|
|
|
|
// CHECK-LABEL: define {{.*}}i1 @__DynamicDomain_isAvailable()
|
|
// CHECK: entry:
|
|
// CHECK: [[CALL:%.*]] = call i32 @dynamic_domain_pred{{(.ptrauth)?}}()
|
|
// CHECK: [[TOBOOL:%.*]] = icmp ne i32 [[CALL]], 0
|
|
// CHECK: ret i1 [[TOBOOL]]
|