Skip to content

Commit 19a0b93

Browse files
committed
Tests: Cover more cases in macCatalyst availability tests.
1 parent e476389 commit 19a0b93

File tree

1 file changed

+67
-8
lines changed

1 file changed

+67
-8
lines changed

test/attr/attr_availability_maccatalyst.swift

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,26 +144,85 @@ extension X: P {}
144144
// Test platform inheritance for iOS unavailability.
145145
// rdar://68597591
146146

147+
func takesAnything<T>(_ t: T) { }
148+
149+
@available(macCatalyst, unavailable)
150+
struct UnavailableOnMacCatalyst { } // expected-note * {{'UnavailableOnMacCatalyst' has been explicitly marked unavailable here}}
151+
147152
@available(iOS, unavailable)
148-
public struct UnavailableOniOS { } // expected-note 2 {{'UnavailableOniOS' has been explicitly marked unavailable here}}
153+
struct UnavailableOniOS { } // expected-note * {{'UnavailableOniOS' has been explicitly marked unavailable here}}
149154

150155
@available(iOS, unavailable)
151-
func unavailableOniOS(_ p: UnavailableOniOS) { } // ok
156+
@available(macCatalyst, introduced: 13.0)
157+
struct AvailableOnMacCatalystButUnavailableOniOS { }
158+
159+
extension UnavailableOnMacCatalyst { } // expected-error {{'UnavailableOnMacCatalyst' is unavailable in Mac Catalyst}}
160+
extension UnavailableOniOS { } // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
161+
extension AvailableOnMacCatalystButUnavailableOniOS { } // ok
162+
163+
@available(macCatalyst, unavailable)
164+
extension UnavailableOnMacCatalyst {
165+
func extensionMethod() {
166+
takesAnything(UnavailableOniOS()) // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
167+
takesAnything(UnavailableOnMacCatalyst())
168+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
169+
}
152170

153-
func functionUsingAnUnavailableType(_ p: UnavailableOniOS) { } // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
171+
@available(iOS, unavailable)
172+
func extensionMethodUnavailableOniOS() {
173+
takesAnything(UnavailableOniOS())
174+
takesAnything(UnavailableOnMacCatalyst())
175+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
176+
}
177+
178+
@available(iOS, introduced: 15)
179+
func extensionMethodIntroducedOniOS() {
180+
takesAnything(UnavailableOniOS()) // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
181+
takesAnything(UnavailableOnMacCatalyst())
182+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
183+
}
154184

155-
public extension UnavailableOniOS { } // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
185+
}
156186

157187
@available(iOS, unavailable)
158-
public extension UnavailableOniOS { // ok
159-
func someMethod(_ p: UnavailableOniOS) { }
188+
extension UnavailableOniOS {
189+
func extensionMethod() {
190+
takesAnything(UnavailableOniOS())
191+
takesAnything(UnavailableOnMacCatalyst())
192+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
193+
}
194+
195+
@available(macCatalyst, unavailable)
196+
func extensionMethodUnavailableOnMacCatalyst() {
197+
takesAnything(UnavailableOniOS())
198+
takesAnything(UnavailableOnMacCatalyst())
199+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
200+
}
201+
202+
@available(macCatalyst, introduced: 13.0)
203+
func extensionMethodMacCatalystIntroduced() {
204+
takesAnything(UnavailableOniOS())
205+
takesAnything(UnavailableOnMacCatalyst())
206+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
207+
}
160208
}
161209

162210
@available(iOS, unavailable)
163211
@available(macCatalyst, introduced: 13.0)
164-
public struct AvailableOnMacCatalyst { }
212+
extension AvailableOnMacCatalystButUnavailableOniOS {
213+
func extensionMethod() {
214+
takesAnything(UnavailableOniOS()) // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
215+
takesAnything(UnavailableOnMacCatalyst()) // expected-error {{'UnavailableOnMacCatalyst' is unavailable in Mac Catalyst}}
216+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
217+
}
165218

166-
public extension AvailableOnMacCatalyst { } // ok
219+
@available(macCatalyst, unavailable)
220+
func extensionMethodUnavailableOnMacCatalyst() {
221+
takesAnything(UnavailableOniOS()) // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
222+
takesAnything(UnavailableOnMacCatalyst())
223+
takesAnything(AvailableOnMacCatalystButUnavailableOniOS())
224+
}
225+
}
167226

168227
@available(iOS, introduced: 14.0)
169228
@available(macCatalyst, introduced: 14.5)

0 commit comments

Comments
 (0)