1
1
// 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
3
3
//
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
7
7
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
10
10
11
11
// REQUIRES: OS=macosx
12
12
@@ -35,6 +35,16 @@ public func useConditionallyAvailableConformance() {
35
35
// CHECK-OLD-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = extern_weak global i8*
36
36
// CHECK-NEW-LABEL: @"$s31weak_import_availability_helper21AlwaysAvailableStructVAA0eF8ProtocolAAWP" = external global i8*
37
37
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
+
38
48
@available ( macOS 10 . 50 , * )
39
49
public func callConditionallyAvailableFunction( ) {
40
50
conditionallyAvailableFunction ( )
@@ -43,6 +53,21 @@ public func callConditionallyAvailableFunction() {
43
53
// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper30conditionallyAvailableFunctionyyF"()
44
54
// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper30conditionallyAvailableFunctionyyF"()
45
55
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
+
63
+ @available ( macOS, unavailable)
64
+ public func callUnavailableButIntroducedFunction( ) {
65
+ unavailableButIntroducedFunction ( )
66
+ }
67
+
68
+ // CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper32unavailableButIntroducedFunctionyyF"()
69
+ // CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper32unavailableButIntroducedFunctionyyF"()
70
+
46
71
@available ( macOS 10 . 50 , * )
47
72
public func useConditionallyAvailableGlobal( ) {
48
73
_ = conditionallyAvailableGlobal
@@ -56,17 +81,56 @@ public func useConditionallyAvailableGlobal() {
56
81
// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivs"(i64)
57
82
// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivs"(i64)
58
83
84
+ // CHECK-OLD-LABEL: declare extern_weak swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
85
+ // CHECK-NEW-LABEL: declare swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
86
+
87
+ @available ( macOS, unavailable)
88
+ public func useUnavailableGlobal( ) {
89
+ _ = unavailableGlobal
90
+ unavailableGlobal = 0
91
+ unavailableGlobal += 1
92
+ }
93
+
94
+ // CHECK-LABEL: declare extern_weak swiftcc i64 @"$s31weak_import_availability_helper17unavailableGlobalSivg"()
95
+ // CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper17unavailableGlobalSivs"(i64)
96
+ // CHECK-LABEL: declare extern_weak swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper17unavailableGlobalSivM"(i8* noalias dereferenceable(32))
97
+
59
98
func blackHole< T> ( _: T ) { }
60
99
61
100
@available ( macOS 10 . 50 , * )
62
101
public func useConditionallyAvailableStruct( ) {
63
102
blackHole ( ConditionallyAvailableStruct . self)
64
103
}
65
104
105
+ // CHECK-OLD-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
106
+ // CHECK-NEW-LABEL: declare swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
107
+
108
+ @available ( macOS 10 . 50 , * )
109
+ public func useNestedConditionallyAvailableStruct( ) {
110
+ blackHole ( ConditionallyAvailableStruct . NestedStruct. self)
111
+ }
112
+
113
+ // CHECK-OLD-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructV06NestedG0VMa"(i64)
114
+ // CHECK-NEW-LABEL: declare swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructV06NestedG0VMa"(i64)
115
+
66
116
@available ( macOS 10 . 50 , * )
67
117
public func useConditionallyAvailableMethod( s: ConditionallyAvailableStruct ) {
68
118
s. conditionallyAvailableMethod ( )
69
119
}
70
120
71
121
// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(%swift.opaque* noalias nocapture swiftself)
72
122
// CHECK-NEW-LABEL: declare swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(%swift.opaque* noalias nocapture swiftself)
123
+
124
+ @available ( macOS, unavailable)
125
+ public func useUnavailableStruct( ) {
126
+ blackHole ( UnvailableStruct . self)
127
+ }
128
+
129
+ // CHECK-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper16UnvailableStructVMa"(i64)
130
+
131
+ @available ( macOS, unavailable)
132
+ public func useUnavailableMethod( s: UnvailableStruct ) {
133
+ s. unavailableMethod ( )
134
+ }
135
+
136
+ // CHECK-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper16UnvailableStructV17unavailableMethodyyF"(%swift.opaque* noalias nocapture swiftself)
0 commit comments