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,13 @@ 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
+
46
63
@available ( macOS 10 . 50 , * )
47
64
public func useConditionallyAvailableGlobal( ) {
48
65
_ = conditionallyAvailableGlobal
@@ -59,6 +76,17 @@ public func useConditionallyAvailableGlobal() {
59
76
// CHECK-OLD-LABEL: declare extern_weak swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
60
77
// CHECK-NEW-LABEL: declare swiftcc { i8*, %TSi* } @"$s31weak_import_availability_helper28conditionallyAvailableGlobalSivM"(i8* noalias dereferenceable(32))
61
78
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
+
62
90
func blackHole< T> ( _: T ) { }
63
91
64
92
@available ( macOS 10 . 50 , * )
@@ -69,10 +97,32 @@ public func useConditionallyAvailableStruct() {
69
97
// CHECK-OLD-LABEL: declare extern_weak swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
70
98
// CHECK-NEW-LABEL: declare swiftcc %swift.metadata_response @"$s31weak_import_availability_helper28ConditionallyAvailableStructVMa"(i64)
71
99
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
+
72
108
@available ( macOS 10 . 50 , * )
73
109
public func useConditionallyAvailableMethod( s: ConditionallyAvailableStruct ) {
74
110
s. conditionallyAvailableMethod ( )
75
111
}
76
112
77
113
// CHECK-OLD-LABEL: declare extern_weak swiftcc void @"$s31weak_import_availability_helper28ConditionallyAvailableStructV013conditionallyF6MethodyyF"(%swift.opaque* noalias nocapture swiftself)
78
114
// 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