1212
1313import weak_import_availability_helper
1414
15+ // AlwaysAvailableEnum.conditionallyAvailableCase enum case
16+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper19AlwaysAvailableEnumO013conditionallyF4CaseyA2CmFWC" = extern_weak constant
17+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper19AlwaysAvailableEnumO013conditionallyF4CaseyA2CmFWC" = external constant
18+
19+
20+ // Protocol witness table for AlwaysAvailableStruct: AlwaysAvailableProtocol
21+ // FIXME: We reference the witness table directly -- that's a bug since the
22+ // module is resilient. Should reference the conformance descriptor instead.
23+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = extern_weak global ptr
24+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = external global ptr
25+
26+
27+ // Protocol witness table for AlwaysAvailableStruct: UnavailableProtocol
28+ // CHECK-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA19UnavailableProtocolAAWP" = extern_weak global ptr
29+
30+
31+ // Opaque type descriptor for conditionallyAvailableOpaqueReturnFunction()
32+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper42conditionallyAvailableOpaqueReturnFunctionQryFQOMQ" = extern_weak global %swift.type_descriptor
33+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper42conditionallyAvailableOpaqueReturnFunctionQryFQOMQ" = external global %swift.type_descriptor
34+
35+
36+ // Opaque type descriptor for AlwaysAvailableStruct.opaqueReturnMethodInConditionallyAvailableExtension()
37+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV033opaqueReturnMethodInConditionallyF9ExtensionQryFQOMQ" = extern_weak global %swift.type_descriptor
38+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV033opaqueReturnMethodInConditionallyF9ExtensionQryFQOMQ" = external global %swift.type_descriptor
39+
40+
41+ // Opaque type descriptor for AlwaysAvailableStruct.conditionallyAvailableOpaqueReturnMethodInExtension()
42+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF29OpaqueReturnMethodInExtensionQryFQOMQ" = extern_weak global %swift.type_descriptor
43+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF29OpaqueReturnMethodInExtensionQryFQOMQ" = external global %swift.type_descriptor
44+
45+
46+ // Opaque type descriptor for AlwaysAvailableStruct.conditionallyAvailableOpaqueReturnMethodInExplicitlyAvailableExtension()
47+ // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf30OpaqueReturnMethodInExplicitlyF9ExtensionQryFQOMQ" = extern_weak global %swift.type_descriptor
48+ // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf30OpaqueReturnMethodInExplicitlyF9ExtensionQryFQOMQ" = external global %swift.type_descriptor
49+
50+
1551public func useConditionallyAvailableCase( e: AlwaysAvailableEnum ) {
1652 switch e {
1753 case . alwaysAvailableCase: break
1854 case . conditionallyAvailableCase: break
1955 }
2056}
2157
22- // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper19AlwaysAvailableEnumO013conditionallyF4CaseyA2CmFWC" = extern_weak constant i32
23- // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper19AlwaysAvailableEnumO013conditionallyF4CaseyA2CmFWC" = external constant i32
24-
2558func useConformance< T : AlwaysAvailableProtocol > ( _: T . Type ) { }
2659
2760@available ( macOS 50 , * )
2861public func useConditionallyAvailableConformance( ) {
2962 useConformance ( AlwaysAvailableStruct . self)
3063}
3164
32- // FIXME: We reference the witness table directly -- that's a bug since the module is resilient. Should reference the
33- // conformance descriptor instead.
34-
35- // CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = extern_weak global ptr
36- // CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = external global ptr
37-
3865@available ( macOS, unavailable)
3966func useUnavailableConformance< T : UnavailableProtocol > ( _: T . Type ) { }
4067
@@ -43,8 +70,6 @@ public func useUnavailableConformance() {
4370 useUnavailableConformance ( AlwaysAvailableStruct . self)
4471}
4572
46- // CHECK-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA19UnavailableProtocolAAWP" = extern_weak global ptr, align 8
47-
4873@available ( macOS 50 , * )
4974public func callConditionallyAvailableFunction( ) {
5075 conditionallyAvailableFunction ( )
@@ -60,6 +85,14 @@ public func callUnavailableFunction() {
6085
6186// CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper19unavailableFunctionyyF"()
6287
88+ @available ( macOS 50 , * )
89+ public func callConditionallyAvailableOpaqueReturnFunction( ) {
90+ blackHole ( conditionallyAvailableOpaqueReturnFunction ( ) )
91+ }
92+
93+ // CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper42conditionallyAvailableOpaqueReturnFunctionQryF"
94+ // CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper42conditionallyAvailableOpaqueReturnFunctionQryF"
95+
6396@available ( macOS 50 , * )
6497public func useConditionallyAvailableGlobal( ) {
6598 _ = conditionallyAvailableGlobal
@@ -113,6 +146,99 @@ public func useConditionallyAvailableMethod(s: ConditionallyAvailableStruct) {
113146// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(ptr noalias swiftself)
114147// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(ptr noalias swiftself)
115148
149+ @available ( macOS 50 , * )
150+ public func useMethodInConditionallyAvailableExtension( s: AlwaysAvailableStruct ) {
151+ s. methodInConditionallyAvailableExtension ( )
152+ }
153+
154+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV021methodInConditionallyF9ExtensionyyF"
155+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV021methodInConditionallyF9ExtensionyyF"
156+
157+ @available ( macOS 50 , * )
158+ public func useOpaqueReturnMethodInConditionallyAvailableExtension( s: AlwaysAvailableStruct ) {
159+ blackHole ( s. opaqueReturnMethodInConditionallyAvailableExtension ( ) )
160+ }
161+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV033opaqueReturnMethodInConditionallyF9ExtensionQryF"
162+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV033opaqueReturnMethodInConditionallyF9ExtensionQryF"
163+
164+ @available ( macOS 50 , * )
165+ public func useVarInConditionallyAvailableExtension( s: inout AlwaysAvailableStruct ) {
166+ _ = s. varInConditionallyAvailableExtension
167+ s. varInConditionallyAvailableExtension = 0
168+ s. varInConditionallyAvailableExtension += 0
169+ }
170+
171+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivg"
172+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivs"
173+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivM"
174+
175+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivg"
176+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivs"
177+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV018varInConditionallyF9ExtensionSivM"
178+
179+ @available ( macOS 50 , * )
180+ public func useConditionallyAvailableMethodInExtension( s: AlwaysAvailableStruct ) {
181+ s. conditionallyAvailableMethodInExtension ( )
182+ }
183+
184+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF17MethodInExtensionyyF"
185+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF17MethodInExtensionyyF"
186+
187+ @available ( macOS 50 , * )
188+ public func useConditionallyAvailableOpaqueReturnMethodInExtension( s: AlwaysAvailableStruct ) {
189+ blackHole ( s. conditionallyAvailableOpaqueReturnMethodInExtension ( ) )
190+ }
191+
192+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF29OpaqueReturnMethodInExtensionQryF"
193+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF29OpaqueReturnMethodInExtensionQryF"
194+
195+ @available ( macOS 50 , * )
196+ public func useConditionallyAvailableVarInExtension( s: inout AlwaysAvailableStruct ) {
197+ _ = s. conditionallyAvailableVarInExtension
198+ s. conditionallyAvailableVarInExtension = 0
199+ s. conditionallyAvailableVarInExtension += 0
200+ }
201+
202+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivg"
203+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivs"
204+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivM"
205+
206+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivg"
207+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivs"
208+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF14VarInExtensionSivM"
209+
210+ @available ( macOS 50 , * )
211+ public func useConditionallyAvailableMethodInExplicitlyAvailableExtension( s: AlwaysAvailableStruct ) {
212+ s. conditionallyAvailableMethodInExplicitlyAvailableExtension ( )
213+ }
214+
215+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf18MethodInExplicitlyF9ExtensionyyF"
216+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf18MethodInExplicitlyF9ExtensionyyF"
217+
218+ @available ( macOS 50 , * )
219+ public func useConditionallyAvailableOpaqueReturnMethodInExplicitlyAvailableExtension( s: AlwaysAvailableStruct ) {
220+ blackHole ( s. conditionallyAvailableOpaqueReturnMethodInExplicitlyAvailableExtension ( ) )
221+ }
222+
223+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf30OpaqueReturnMethodInExplicitlyF9ExtensionQryF"
224+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyf30OpaqueReturnMethodInExplicitlyF9ExtensionQryF"
225+
226+
227+ @available ( macOS 50 , * )
228+ public func useConditionallyAvailableVarInExplicitlyAvailableExtension( s: inout AlwaysAvailableStruct ) {
229+ _ = s. conditionallyAvailableVarInExplicitlyAvailablextension
230+ s. conditionallyAvailableVarInExplicitlyAvailablextension = 0
231+ s. conditionallyAvailableVarInExplicitlyAvailablextension += 0
232+ }
233+
234+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivg"
235+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivs"
236+ // CHECK-OLD-LABEL: declare extern_weak swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivM"
237+
238+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivg"
239+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivs"
240+ // CHECK-NEW-LABEL: declare swiftcc {{.+}} @"$s31weak_import_availability_helper21AlwaysAvailableStructV013conditionallyF32VarInExplicitlyAvailablextensionSivM"
241+
116242@available ( macOS, unavailable)
117243public func useUnavailableStruct( ) {
118244 blackHole ( UnavailableStruct . self)
0 commit comments