Skip to content

Commit 62986b7

Browse files
committed
Tests: Expand SILGen tests for custom availability domain queries.
1 parent 3bacc32 commit 62986b7

File tree

4 files changed

+303
-42
lines changed

4 files changed

+303
-42
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#include <feature-availability.h>
2+
3+
static struct __AvailabilityDomain __EnabledDomain
4+
__attribute__((availability_domain(EnabledDomain))) = {
5+
__AVAILABILITY_DOMAIN_ENABLED, 0};
6+
7+
static struct __AvailabilityDomain __DisabledDomain
8+
__attribute__((availability_domain(DisabledDomain))) = {
9+
__AVAILABILITY_DOMAIN_DISABLED, 0};
10+
11+
int dynamic_domain_pred();
12+
13+
static struct __AvailabilityDomain __DynamicDomain
14+
__attribute__((availability_domain(DynamicDomain))) = {
15+
__AVAILABILITY_DOMAIN_DYNAMIC, dynamic_domain_pred};
16+
17+
#define AVAIL 0
18+
#define UNAVAIL 1
19+
20+
__attribute__((availability(domain:EnabledDomain, AVAIL)))
21+
void available_in_enabled_domain(void);
22+
23+
__attribute__((availability(domain:EnabledDomain, UNAVAIL)))
24+
void unavailable_in_enabled_domain(void);
25+
26+
__attribute__((availability(domain:DisabledDomain, AVAIL)))
27+
void available_in_disabled_domain(void);
28+
29+
__attribute__((availability(domain:DisabledDomain, UNAVAIL)))
30+
void unavailable_in_disabled_domain(void);
31+
32+
__attribute__((availability(domain:DynamicDomain, AVAIL)))
33+
void available_in_dynamic_domain(void);
34+
35+
__attribute__((availability(domain:DynamicDomain, UNAVAIL)))
36+
void unavailable_in_dynamic_domain(void);
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
2+
// RUN: -enable-experimental-feature CustomAvailability \
3+
// RUN: -define-enabled-availability-domain EnabledDomain \
4+
// RUN: -define-disabled-availability-domain DisabledDomain \
5+
// RUN: -define-dynamic-availability-domain DynamicDomain \
6+
// RUN: | %FileCheck %s
7+
8+
// REQUIRES: swift_feature_CustomAvailability
9+
10+
@available(EnabledDomain)
11+
public func availableInEnabledDomain() { }
12+
13+
@available(EnabledDomain, unavailable)
14+
public func unavailableInEnabledDomain() { }
15+
16+
@available(DisabledDomain)
17+
public func availableInDisabledDomain() { }
18+
19+
@available(DisabledDomain, unavailable)
20+
public func unavailableInDisabledDomain() { }
21+
22+
@available(DynamicDomain)
23+
public func availableInDynamicDomain() { }
24+
25+
@available(DynamicDomain, unavailable)
26+
public func unavailableInDynamicDomain() { }
27+
28+
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableEnabledDomainyyF : $@convention(thin) () -> ()
29+
public func testIfAvailableEnabledDomain() {
30+
// CHECK: bb0:
31+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
32+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
33+
34+
// CHECK: [[TRUE_BB]]:
35+
// CHECK: function_ref @$s4Test24availableInEnabledDomainyyF
36+
37+
// CHECK: [[FALSE_BB]]:
38+
// CHECK: function_ref @$s4Test26unavailableInEnabledDomainyyF
39+
if #available(EnabledDomain) {
40+
availableInEnabledDomain()
41+
} else {
42+
unavailableInEnabledDomain()
43+
}
44+
}
45+
// CHECK: end sil function '$s4Test28testIfAvailableEnabledDomainyyF'
46+
47+
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableEnabledDomainyyF : $@convention(thin) () -> ()
48+
public func testIfUnavailableEnabledDomain() {
49+
// CHECK: bb0:
50+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
51+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
52+
53+
// CHECK: [[TRUE_BB]]:
54+
// CHECK: function_ref @$s4Test26unavailableInEnabledDomainyyF
55+
56+
// CHECK: [[FALSE_BB]]:
57+
// CHECK: function_ref @$s4Test24availableInEnabledDomainyyF
58+
if #unavailable(EnabledDomain) {
59+
unavailableInEnabledDomain()
60+
} else {
61+
availableInEnabledDomain()
62+
}
63+
}
64+
// CHECK: end sil function '$s4Test30testIfUnavailableEnabledDomainyyF'
65+
66+
// CHECK-LABEL: sil{{.*}}$s4Test29testIfAvailableDisabledDomainyyF : $@convention(thin) () -> ()
67+
public func testIfAvailableDisabledDomain() {
68+
// CHECK: bb0:
69+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
70+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
71+
72+
// CHECK: [[TRUE_BB]]:
73+
// CHECK: function_ref @$s4Test25availableInDisabledDomainyyF
74+
75+
// CHECK: [[FALSE_BB]]:
76+
// CHECK: function_ref @$s4Test27unavailableInDisabledDomainyyF
77+
if #available(DisabledDomain) {
78+
availableInDisabledDomain()
79+
} else {
80+
unavailableInDisabledDomain()
81+
}
82+
}
83+
// CHECK: end sil function '$s4Test29testIfAvailableDisabledDomainyyF'
84+
85+
// CHECK-LABEL: sil{{.*}}$s4Test31testIfUnavailableDisabledDomainyyF : $@convention(thin) () -> ()
86+
public func testIfUnavailableDisabledDomain() {
87+
// CHECK: bb0:
88+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
89+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
90+
91+
// CHECK: [[TRUE_BB]]:
92+
// CHECK: function_ref @$s4Test27unavailableInDisabledDomainyyF
93+
94+
// CHECK: [[FALSE_BB]]:
95+
// CHECK: function_ref @$s4Test25availableInDisabledDomainyyF
96+
if #unavailable(DisabledDomain) {
97+
unavailableInDisabledDomain()
98+
} else {
99+
availableInDisabledDomain()
100+
}
101+
}
102+
// CHECK: end sil function '$s4Test31testIfUnavailableDisabledDomainyyF'
103+
104+
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableDynamicDomainyyF : $@convention(thin) () -> ()
105+
public func testIfAvailableDynamicDomain() {
106+
// FIXME: [availability] Call dynamic domain predicate function
107+
// CHECK: bb0:
108+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
109+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
110+
111+
// CHECK: [[TRUE_BB]]:
112+
// CHECK: function_ref @$s4Test24availableInDynamicDomainyyF
113+
114+
// CHECK: [[FALSE_BB]]:
115+
// CHECK: function_ref @$s4Test26unavailableInDynamicDomainyyF
116+
if #available(DynamicDomain) {
117+
availableInDynamicDomain()
118+
} else {
119+
unavailableInDynamicDomain()
120+
}
121+
}
122+
// CHECK: end sil function '$s4Test28testIfAvailableDynamicDomainyyF'
123+
124+
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableDynamicDomainyyF : $@convention(thin) () -> ()
125+
public func testIfUnavailableDynamicDomain() {
126+
// FIXME: [availability] Call dynamic domain predicate function
127+
// CHECK: bb0:
128+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
129+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
130+
131+
// CHECK: [[TRUE_BB]]:
132+
// CHECK: function_ref @$s4Test26unavailableInDynamicDomainyyF
133+
134+
// CHECK: [[FALSE_BB]]:
135+
// CHECK: function_ref @$s4Test24availableInDynamicDomainyyF
136+
if #unavailable(DynamicDomain) {
137+
unavailableInDynamicDomain()
138+
} else {
139+
availableInDynamicDomain()
140+
}
141+
}
142+
// CHECK: end sil function '$s4Test30testIfUnavailableDynamicDomainyyF'
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
2+
// RUN: -enable-experimental-feature CustomAvailability \
3+
// RUN: -import-bridging-header %S/Inputs/AvailabilityDomains.h \
4+
// RUN: | %FileCheck %s
5+
6+
// REQUIRES: swift_feature_CustomAvailability
7+
8+
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableEnabledDomainyyF : $@convention(thin) () -> ()
9+
public func testIfAvailableEnabledDomain() {
10+
// CHECK: bb0:
11+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
12+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
13+
14+
// CHECK: [[TRUE_BB]]:
15+
// CHECK: function_ref @available_in_enabled_domain
16+
17+
// CHECK: [[FALSE_BB]]:
18+
// CHECK: function_ref @unavailable_in_enabled_domain
19+
if #available(EnabledDomain) {
20+
available_in_enabled_domain()
21+
} else {
22+
unavailable_in_enabled_domain()
23+
}
24+
}
25+
// CHECK: end sil function '$s4Test28testIfAvailableEnabledDomainyyF'
26+
27+
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableEnabledDomainyyF : $@convention(thin) () -> ()
28+
public func testIfUnavailableEnabledDomain() {
29+
// CHECK: bb0:
30+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
31+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
32+
33+
// CHECK: [[TRUE_BB]]:
34+
// CHECK: function_ref @unavailable_in_enabled_domain
35+
36+
// CHECK: [[FALSE_BB]]:
37+
// CHECK: function_ref @available_in_enabled_domain
38+
if #unavailable(EnabledDomain) {
39+
unavailable_in_enabled_domain()
40+
} else {
41+
available_in_enabled_domain()
42+
}
43+
}
44+
// CHECK: end sil function '$s4Test30testIfUnavailableEnabledDomainyyF'
45+
46+
// CHECK-LABEL: sil{{.*}}$s4Test29testIfAvailableDisabledDomainyyF : $@convention(thin) () -> ()
47+
public func testIfAvailableDisabledDomain() {
48+
// CHECK: bb0:
49+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
50+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
51+
52+
// CHECK: [[TRUE_BB]]:
53+
// CHECK: function_ref @available_in_disabled_domain
54+
55+
// CHECK: [[FALSE_BB]]:
56+
// CHECK: function_ref @unavailable_in_disabled_domain
57+
if #available(DisabledDomain) {
58+
available_in_disabled_domain()
59+
} else {
60+
unavailable_in_disabled_domain()
61+
}
62+
}
63+
// CHECK: end sil function '$s4Test29testIfAvailableDisabledDomainyyF'
64+
65+
// CHECK-LABEL: sil{{.*}}$s4Test31testIfUnavailableDisabledDomainyyF : $@convention(thin) () -> ()
66+
public func testIfUnavailableDisabledDomain() {
67+
// CHECK: bb0:
68+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
69+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
70+
71+
// CHECK: [[TRUE_BB]]:
72+
// CHECK: function_ref @unavailable_in_disabled_domain
73+
74+
// CHECK: [[FALSE_BB]]:
75+
// CHECK: function_ref @available_in_disabled_domain
76+
if #unavailable(DisabledDomain) {
77+
unavailable_in_disabled_domain()
78+
} else {
79+
available_in_disabled_domain()
80+
}
81+
}
82+
// CHECK: end sil function '$s4Test31testIfUnavailableDisabledDomainyyF'
83+
84+
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableDynamicDomainyyF : $@convention(thin) () -> ()
85+
public func testIfAvailableDynamicDomain() {
86+
// FIXME: [availability] Call dynamic domain predicate function
87+
// CHECK: bb0:
88+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
89+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
90+
91+
// CHECK: [[TRUE_BB]]:
92+
// CHECK: function_ref @available_in_dynamic_domain
93+
94+
// CHECK: [[FALSE_BB]]:
95+
// CHECK: function_ref @unavailable_in_dynamic_domain
96+
if #available(DynamicDomain) {
97+
available_in_dynamic_domain()
98+
} else {
99+
unavailable_in_dynamic_domain()
100+
}
101+
}
102+
// CHECK: end sil function '$s4Test28testIfAvailableDynamicDomainyyF'
103+
104+
// CHECK-LABEL: sil{{.*}}$s4Test30testIfUnavailableDynamicDomainyyF : $@convention(thin) () -> ()
105+
public func testIfUnavailableDynamicDomain() {
106+
// FIXME: [availability] Call dynamic domain predicate function
107+
// CHECK: bb0:
108+
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
109+
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
110+
111+
// CHECK: [[TRUE_BB]]:
112+
// CHECK: function_ref @unavailable_in_dynamic_domain
113+
114+
// CHECK: [[FALSE_BB]]:
115+
// CHECK: function_ref @available_in_dynamic_domain
116+
if #unavailable(DynamicDomain) {
117+
unavailable_in_dynamic_domain()
118+
} else {
119+
available_in_dynamic_domain()
120+
}
121+
}
122+
// CHECK: end sil function '$s4Test30testIfUnavailableDynamicDomainyyF'

test/SILGen/unavailable_decl_custom_domain.swift

Lines changed: 3 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@
33
// RUN: -define-enabled-availability-domain EnabledDomain \
44
// RUN: -define-disabled-availability-domain DisabledDomain \
55
// RUN: -define-dynamic-availability-domain DynamicDomain \
6-
// RUN: | %FileCheck %s --check-prefixes=CHECK
6+
// RUN: | %FileCheck %s
77

88
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
99
// RUN: -enable-experimental-feature CustomAvailability \
1010
// RUN: -define-enabled-availability-domain EnabledDomain \
1111
// RUN: -define-disabled-availability-domain DisabledDomain \
1212
// RUN: -define-dynamic-availability-domain DynamicDomain \
1313
// RUN: -unavailable-decl-optimization=stub \
14-
// RUN: | %FileCheck %s --check-prefixes=CHECK
14+
// RUN: | %FileCheck %s
1515

1616
// RUN: %target-swift-emit-silgen -module-name Test %s -verify \
1717
// RUN: -enable-experimental-feature CustomAvailability \
1818
// RUN: -define-enabled-availability-domain EnabledDomain \
1919
// RUN: -define-disabled-availability-domain DisabledDomain \
2020
// RUN: -define-dynamic-availability-domain DynamicDomain \
2121
// RUN: -unavailable-decl-optimization=complete \
22-
// RUN: | %FileCheck %s --check-prefixes=CHECK
22+
// RUN: | %FileCheck %s
2323

2424
// REQUIRES: swift_feature_CustomAvailability
2525

@@ -84,42 +84,3 @@ public func availableInEnabledAndDisabledDomain() { }
8484
@available(DisabledDomain)
8585
@available(EnabledDomain)
8686
public func availableInDisabledAndEnabledDomain() { }
87-
88-
// CHECK-LABEL: sil{{.*}}$s4Test28testIfAvailableEnabledDomainyyF : $@convention(thin) () -> ()
89-
public func testIfAvailableEnabledDomain() {
90-
// CHECK: bb0:
91-
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, -1
92-
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
93-
94-
// CHECK: [[TRUE_BB]]:
95-
// CHECK: function_ref @$s4Test24availableInEnabledDomainyyF
96-
97-
// CHECK: [[FALSE_BB]]:
98-
// CHECK: function_ref @$s4Test26unavailableInEnabledDomainyyF
99-
if #available(EnabledDomain) {
100-
availableInEnabledDomain()
101-
} else {
102-
unavailableInEnabledDomain()
103-
}
104-
}
105-
// CHECK: end sil function '$s4Test28testIfAvailableEnabledDomainyyF'
106-
107-
// CHECK-LABEL: sil{{.*}}$s4Test29testIfAvailableDisabledDomainyyF : $@convention(thin) () -> ()
108-
public func testIfAvailableDisabledDomain() {
109-
// CHECK: bb0:
110-
// CHECK: [[PRED:%.*]] = integer_literal $Builtin.Int1, 0
111-
// CHECK: cond_br [[PRED]], [[TRUE_BB:bb[0-9]+]], [[FALSE_BB:bb[0-9]+]]
112-
113-
// CHECK: [[TRUE_BB]]:
114-
// CHECK: function_ref @$s4Test25availableInDisabledDomainyyF
115-
116-
// CHECK: [[FALSE_BB]]:
117-
// CHECK: function_ref @$s4Test27unavailableInDisabledDomainyyF
118-
if #available(DisabledDomain) {
119-
availableInDisabledDomain()
120-
} else {
121-
unavailableInDisabledDomain()
122-
}
123-
}
124-
// CHECK: end sil function '$s4Test29testIfAvailableDisabledDomainyyF'
125-

0 commit comments

Comments
 (0)