11// RUN: %empty-directory(%t)
2- // RUN: %target-swift-frontend -emit-module -emit-module-path %t/weak_import_availability_helper.swiftmodule -parse-as-library %S/Inputs/weak_import_availability_helper.swift -enable-library-evolution
2+ // RUN: %target-swift-frontend -target %target-cpu-apple-macosx10.50 - emit-module -emit-module-path %t/weak_import_availability_helper.swiftmodule -parse-as-library %S/Inputs/weak_import_availability_helper.swift -enable-library-evolution
33//
4- // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir | %FileCheck %s --check-prefix= CHECK-OLD
5- // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.50 | %FileCheck %s --check-prefix= CHECK-NEW
6- // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.60 | %FileCheck %s --check-prefix= CHECK-NEW
4+ // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir | %FileCheck %s --check-prefixes=CHECK, CHECK-OLD
5+ // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.50 | %FileCheck %s --check-prefixes=CHECK, CHECK-NEW
6+ // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.60 | %FileCheck %s --check-prefixes=CHECK, CHECK-NEW
77
8- // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.50 -weak-link-at-target | %FileCheck %s --check-prefix= CHECK-OLD
9- // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.60 -weak-link-at-target | %FileCheck %s --check-prefix= CHECK-NEW
8+ // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.50 -weak-link-at-target | %FileCheck %s --check-prefixes=CHECK, CHECK-OLD
9+ // RUN: %target-swift-frontend -primary-file %s -I %t -emit-ir -target %target-cpu-apple-macosx10.60 -weak-link-at-target | %FileCheck %s --check-prefixes=CHECK, CHECK-NEW
1010
1111// REQUIRES: OS=macosx
1212
@@ -35,6 +35,16 @@ public func useConditionallyAvailableConformance() {
3535// CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = extern_weak global i8*
3636// CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = external global i8*
3737
38+ @available ( macOS, unavailable)
39+ func useUnavailableConformance< T : UnavailableProtocol > ( _: T . Type ) { }
40+
41+ @available ( macOS, unavailable)
42+ public func useUnavailableConformance( ) {
43+ useUnavailableConformance ( AlwaysAvailableStruct . self)
44+ }
45+
46+ // CHECK-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA19UnavailableProtocolAAWP" = extern_weak global i8*, align 8
47+
3848@available ( macOS 10 . 50 , * )
3949public func callConditionallyAvailableFunction( ) {
4050 conditionallyAvailableFunction ( )
@@ -43,6 +53,13 @@ public func callConditionallyAvailableFunction() {
4353// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper30conditionallyAvailableFunctionyyF"()
4454// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper30conditionallyAvailableFunctionyyF"()
4555
56+ @available ( macOS, unavailable)
57+ public func callUnavailableFunction( ) {
58+ unavailableFunction ( )
59+ }
60+
61+ // CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper19unavailableFunctionyyF"()
62+
4663@available ( macOS 10 . 50 , * )
4764public func useConditionallyAvailableGlobal( ) {
4865 _ = conditionallyAvailableGlobal
@@ -59,6 +76,17 @@ public func useConditionallyAvailableGlobal() {
5976// CHECK-OLD-LABEL: declare extern_weak swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
6077// CHECK-NEW-LABEL: declare swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
6178
79+ @available ( macOS, unavailable)
80+ public func useUnavailableGlobal( ) {
81+ _ = unavailableGlobal
82+ unavailableGlobal = 0
83+ unavailableGlobal += 1
84+ }
85+
86+ // CHECK-LABEL: declare extern_weak swiftcc i64 @"$s31weak_import_availability_helper17unavailableGlobalSivg"()
87+ // CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper17unavailableGlobalSivs"(i64)
88+ // CHECK-LABEL: declare extern_weak swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper17unavailableGlobalSivM"(i8* noalias dereferenceable(32))
89+
6290func blackHole< T> ( _: T ) { }
6391
6492@available ( macOS 10 . 50 , * )
@@ -69,10 +97,32 @@ public func useConditionallyAvailableStruct() {
6997// CHECK-OLD-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
7098// CHECK-NEW-LABEL: declare swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
7199
100+ @available ( macOS 10 . 50 , * )
101+ public func useNestedConditionallyAvailableStruct( ) {
102+ blackHole ( ConditionallyAvailableStruct . NestedStruct. self)
103+ }
104+
105+ // CHECK-OLD-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructV06NestedG0VMa"(i64)
106+ // CHECK-NEW-LABEL: declare swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructV06NestedG0VMa"(i64)
107+
72108@available ( macOS 10 . 50 , * )
73109public func useConditionallyAvailableMethod( s: ConditionallyAvailableStruct ) {
74110 s. conditionallyAvailableMethod ( )
75111}
76112
77113// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(%swift.opaque* noalias nocapture swiftself)
78114// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(%swift.opaque* noalias nocapture swiftself)
115+
116+ @available ( macOS, unavailable)
117+ public func useUnavailableStruct( ) {
118+ blackHole ( UnvailableStruct . self)
119+ }
120+
121+ // CHECK-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper16UnvailableStructVMa"(i64)
122+
123+ @available ( macOS, unavailable)
124+ public func useUnavailableMethod( s: UnvailableStruct ) {
125+ s. unavailableMethod ( )
126+ }
127+
128+ // CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper16UnvailableStructV17unavailableMethodyyF"(%swift.opaque* noalias nocapture swiftself)
0 commit comments