mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
When importing custom availability domains with dynamic predicates from Clang modules, synthesize predicate functions for `if #available` queries and call them when generating SIL. Resolves rdar://138441312.
35 lines
1.2 KiB
C
35 lines
1.2 KiB
C
#include <feature-availability.h>
|
|
|
|
static struct __AvailabilityDomain __EnabledDomain __attribute__((
|
|
availability_domain(EnabledDomain))) = {__AVAILABILITY_DOMAIN_ENABLED, 0};
|
|
|
|
static struct __AvailabilityDomain __DisabledDomain __attribute__((
|
|
availability_domain(DisabledDomain))) = {__AVAILABILITY_DOMAIN_DISABLED, 0};
|
|
|
|
int dynamic_domain_pred();
|
|
|
|
static struct __AvailabilityDomain __DynamicDomain
|
|
__attribute__((availability_domain(DynamicDomain))) = {
|
|
__AVAILABILITY_DOMAIN_DYNAMIC, dynamic_domain_pred};
|
|
|
|
#define AVAIL 0
|
|
#define UNAVAIL 1
|
|
|
|
__attribute__((availability(domain : EnabledDomain, AVAIL))) void
|
|
available_in_enabled_domain(void);
|
|
|
|
__attribute__((availability(domain : EnabledDomain, UNAVAIL))) void
|
|
unavailable_in_enabled_domain(void);
|
|
|
|
__attribute__((availability(domain : DisabledDomain, AVAIL))) void
|
|
available_in_disabled_domain(void);
|
|
|
|
__attribute__((availability(domain : DisabledDomain, UNAVAIL))) void
|
|
unavailable_in_disabled_domain(void);
|
|
|
|
__attribute__((availability(domain : DynamicDomain, AVAIL))) void
|
|
available_in_dynamic_domain(void);
|
|
|
|
__attribute__((availability(domain : DynamicDomain, UNAVAIL))) void
|
|
unavailable_in_dynamic_domain(void);
|