Skip to content

Commit 702eda6

Browse files
committed
Tests: Split up tests for custom availability domains.
NFC.
1 parent 56e5ca7 commit 702eda6

File tree

3 files changed

+130
-92
lines changed

3 files changed

+130
-92
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// RUN: %target-typecheck-verify-swift \
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+
7+
// REQUIRES: swift_feature_CustomAvailability
8+
9+
if #available(EnabledDomain) { }
10+
// expected-error@-1 {{condition required for target platform}}
11+
if #available(DisabledDomain) { }
12+
// expected-error@-1 {{condition required for target platform}}
13+
if #available(DynamicDomain) { }
14+
// expected-error@-1 {{condition required for target platform}}
15+
if #available(UnknownDomain) { } // expected-warning {{unrecognized platform name 'UnknownDomain'}}
16+
// expected-error@-1 {{condition required for target platform}}
17+
18+
if #unavailable(EnabledDomain) { }
19+
if #unavailable(DisabledDomain) { }
20+
if #unavailable(DynamicDomain) { }
21+
if #unavailable(UnknownDomain) { } // expected-warning {{unrecognized platform name 'UnknownDomain'}}
22+
23+
if #available(EnabledDomain 1.0) { } // expected-error {{unexpected version number for EnabledDomain}}
24+
// expected-error@-1 {{condition required for target platform}}
25+
if #available(EnabledDomain, DisabledDomain) { } // expected-error {{EnabledDomain availability must be specified alone}}
26+
// expected-error@-1 {{condition required for target platform}}
27+
28+
if #available(EnabledDomain, swift 5) { } // expected-error {{EnabledDomain availability must be specified alone}}
29+
// expected-error@-1 {{condition required for target platform}}
30+
31+
while #available(EnabledDomain) { }
32+
// expected-error@-1 {{condition required for target platform}}
33+
34+
guard #available(EnabledDomain) else { }
35+
// expected-error@-1 {{condition required for target platform}}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
// RUN: %target-typecheck-verify-swift \
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+
7+
// REQUIRES: swift_feature_CustomAvailability
8+
9+
func alwaysAvailable() { }
10+
11+
@available(EnabledDomain)
12+
func availableInEnabledDomain() { }
13+
14+
@available(EnabledDomain, unavailable)
15+
func unavailableInEnabledDomain() { }
16+
17+
@available(DisabledDomain, unavailable)
18+
func unavailableInDisabledDomain() { } // expected-note 4 {{'unavailableInDisabledDomain()' has been explicitly marked unavailable here}}
19+
20+
@available(DynamicDomain)
21+
func availableInDynamicDomain() { }
22+
23+
@available(DynamicDomain, deprecated, message: "Use something else")
24+
func deprecatedInDynamicDomain() { }
25+
26+
@available(UnknownDomain) // expected-warning {{unrecognized platform name 'UnknownDomain'}}
27+
func availableInUnknownDomain() { }
28+
29+
func testDeployment() {
30+
alwaysAvailable()
31+
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
32+
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
33+
deprecatedInDynamicDomain() // expected-warning {{'deprecatedInDynamicDomain()' is deprecated: Use something else}}
34+
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
35+
availableInUnknownDomain()
36+
}
37+
38+
@available(EnabledDomain)
39+
func testEnabledDomainAvailable() {
40+
availableInEnabledDomain() // OK
41+
if #available(EnabledDomain) {} // FIXME: [availability] Diagnose as redundant
42+
// expected-error@-1 {{condition required for target platform}}
43+
if #unavailable(EnabledDomain) {}
44+
45+
alwaysAvailable()
46+
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
47+
deprecatedInDynamicDomain() // expected-warning {{'deprecatedInDynamicDomain()' is deprecated: Use something else}}
48+
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
49+
availableInUnknownDomain()
50+
}
51+
52+
53+
@available(EnabledDomain, unavailable)
54+
func testEnabledDomainUnavailable() {
55+
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
56+
if #available(EnabledDomain) {} // FIXME: [availability] Maybe diagnose?
57+
// expected-error@-1 {{condition required for target platform}}
58+
if #unavailable(EnabledDomain) {} // FIXME: [availability] Diagnose as redundant
59+
60+
alwaysAvailable()
61+
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
62+
deprecatedInDynamicDomain() // expected-warning {{'deprecatedInDynamicDomain()' is deprecated: Use something else}}
63+
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
64+
availableInUnknownDomain()
65+
}
66+
67+
@available(DisabledDomain, unavailable)
68+
func testDisabledDomainUnavailable() {
69+
unavailableInDisabledDomain() // OK
70+
}
71+
72+
@available(*, unavailable)
73+
func testUniversallyUnavailable() {
74+
alwaysAvailable()
75+
// FIXME: [availability] Diagnostic consistency: potentially unavailable declaration shouldn't be diagnosed
76+
// in contexts that are unavailable to broader domains
77+
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
78+
unavailableInDisabledDomain()
79+
deprecatedInDynamicDomain() // expected-warning {{'deprecatedInDynamicDomain()' is deprecated: Use something else}}
80+
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
81+
availableInUnknownDomain()
82+
}
83+
84+
@available(EnabledDomain)
85+
struct EnabledDomainAvailable {
86+
@available(DynamicDomain)
87+
func dynamicDomainAvailableMethod() {
88+
availableInEnabledDomain() // OK
89+
availableInDynamicDomain() // OK
90+
91+
alwaysAvailable()
92+
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
93+
}
94+
}

test/attr/attr_availability_custom_domains.swift

Lines changed: 1 addition & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func deprecatedInEnabledDomain() { }
4949
func obsoletedInEnabledDomain() { }
5050

5151
@available(DisabledDomain, unavailable)
52-
func unavailableInDisabledDomain() { } // expected-note 4 {{'unavailableInDisabledDomain()' has been explicitly marked unavailable here}}
52+
func unavailableInDisabledDomain() { }
5353

5454
@available(RedefinedDomain, deprecated, message: "Use something else")
5555
func deprecatedInRedefinedDomain() { }
@@ -59,94 +59,3 @@ func availableInDynamicDomain() { }
5959

6060
@available(UnknownDomain) // expected-warning {{unrecognized platform name 'UnknownDomain'}}
6161
func availableInUnknownDomain() { }
62-
63-
func testQuerySyntax() {
64-
if #available(EnabledDomain) {}
65-
// expected-error@-1 {{condition required for target platform}}
66-
if #available(RedefinedDomain) {}
67-
// expected-error@-1 {{condition required for target platform}}
68-
if #available(DisabledDomain) {}
69-
// expected-error@-1 {{condition required for target platform}}
70-
if #available(DynamicDomain) {}
71-
// expected-error@-1 {{condition required for target platform}}
72-
if #available(UnknownDomain) {} // expected-warning {{unrecognized platform name 'UnknownDomain'}}
73-
// expected-error@-1 {{condition required for target platform}}
74-
75-
if #unavailable(EnabledDomain) {}
76-
if #unavailable(RedefinedDomain) {}
77-
if #unavailable(DisabledDomain) {}
78-
if #unavailable(DynamicDomain) {}
79-
if #unavailable(UnknownDomain) {} // expected-warning {{unrecognized platform name 'UnknownDomain'}}
80-
81-
if #available(EnabledDomain 1.0) {} // expected-error {{unexpected version number for EnabledDomain}}
82-
// expected-error@-1 {{condition required for target platform}}
83-
if #available(EnabledDomain, DisabledDomain) {} // expected-error {{EnabledDomain availability must be specified alone}}
84-
// expected-error@-1 {{condition required for target platform}}
85-
}
86-
87-
func testDeployment() {
88-
alwaysAvailable()
89-
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
90-
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
91-
deprecatedInRedefinedDomain() // expected-warning {{'deprecatedInRedefinedDomain()' is deprecated: Use something else}}
92-
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
93-
availableInUnknownDomain()
94-
}
95-
96-
@available(EnabledDomain)
97-
func testEnabledDomainAvailable() {
98-
availableInEnabledDomain() // OK
99-
if #available(EnabledDomain) {} // FIXME: [availability] Diagnose as redundant
100-
// expected-error@-1 {{condition required for target platform}}
101-
if #unavailable(EnabledDomain) {}
102-
103-
alwaysAvailable()
104-
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
105-
deprecatedInRedefinedDomain() // expected-warning {{'deprecatedInRedefinedDomain()' is deprecated: Use something else}}
106-
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
107-
availableInUnknownDomain()
108-
}
109-
110-
111-
@available(EnabledDomain, unavailable)
112-
func testEnabledDomainUnavailable() {
113-
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
114-
if #available(EnabledDomain) {} // FIXME: [availability] Maybe diagnose?
115-
// expected-error@-1 {{condition required for target platform}}
116-
if #unavailable(EnabledDomain) {} // FIXME: [availability] Diagnose as redundant
117-
118-
alwaysAvailable()
119-
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
120-
deprecatedInRedefinedDomain() // expected-warning {{'deprecatedInRedefinedDomain()' is deprecated: Use something else}}
121-
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
122-
availableInUnknownDomain()
123-
}
124-
125-
@available(DisabledDomain, unavailable)
126-
func testDisabledDomainUnavailable() {
127-
unavailableInDisabledDomain() // OK
128-
}
129-
130-
@available(*, unavailable)
131-
func testUniversallyUnavailable() {
132-
alwaysAvailable()
133-
// FIXME: [availability] Diagnostic consistency: potentially unavailable declaration shouldn't be diagnosed
134-
// in contexts that are unavailable to broader domains
135-
availableInEnabledDomain() // expected-error {{'availableInEnabledDomain()' is only available in EnabledDomain}}
136-
unavailableInDisabledDomain()
137-
deprecatedInRedefinedDomain() // expected-warning {{'deprecatedInRedefinedDomain()' is deprecated: Use something else}}
138-
availableInDynamicDomain() // expected-error {{'availableInDynamicDomain()' is only available in DynamicDomain}}
139-
availableInUnknownDomain()
140-
}
141-
142-
@available(EnabledDomain)
143-
struct EnabledDomainAvailable {
144-
@available(DynamicDomain)
145-
func dynamicDomainAvailableMethod() {
146-
availableInEnabledDomain() // OK
147-
availableInDynamicDomain() // OK
148-
149-
alwaysAvailable()
150-
unavailableInDisabledDomain() // expected-error {{'unavailableInDisabledDomain()' is unavailable}}
151-
}
152-
}

0 commit comments

Comments
 (0)