1
1
// RUN: %target-typecheck-verify-swift -target %target-cpu-apple-macosx10.52
2
2
3
- // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil -o %t.fragile.sil %s
4
- // RUN: %FileCheck %s < %t.fragile.sil
5
- // RUN: %FileCheck -check-prefix NEGATIVE %s < %t.fragile.sil
3
+ // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil %s -o %t.fragile.sil
4
+ // RUN: %FileCheck -check-prefixes=CHECK,CHECK-NO-EXTENSION %s < %t.fragile.sil
5
+ // RUN: %FileCheck -check-prefixes= NEGATIVE,NEGATIVE-NO-EXTENSION %s < %t.fragile.sil
6
6
7
- // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil -enable-library-evolution -o %t.resilient.sil %s
8
- // RUN: %FileCheck %s < %t.resilient.sil
9
- // RUN: %FileCheck -check-prefix NEGATIVE %s < %t.resilient.sil
7
+ // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil %s -o %t.extensions-fragile.sil -application-extension
8
+ // RUN: %FileCheck -check-prefixes=CHECK,CHECK-EXTENSION %s < %t.extensions-fragile.sil
9
+ // RUN: %FileCheck -check-prefixes=NEGATIVE,NEGATIVE-EXTENSION %s < %t.extensions-fragile.sil
10
+
11
+ // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil %s -enable-library-evolution -o %t.resilient.sil
12
+ // RUN: %FileCheck -check-prefixes=CHECK,CHECK-NO-EXTENSION %s < %t.resilient.sil
13
+ // RUN: %FileCheck -check-prefixes=NEGATIVE,NEGATIVE-NO-EXTENSION %s < %t.resilient.sil
14
+
15
+ // RUN: %target-swift-emit-silgen -target %target-cpu-apple-macosx10.52 -emit-sorted-sil %s -enable-library-evolution -o %t.extensions-resilient.sil -application-extension
16
+ // RUN: %FileCheck -check-prefixes=CHECK,CHECK-EXTENSION %s < %t.extensions-resilient.sil
17
+ // RUN: %FileCheck -check-prefixes=NEGATIVE,NEGATIVE-EXTENSION %s < %t.extensions-resilient.sil
10
18
11
19
// This test just requires a platform with meaningful #available() checks, but
12
20
// for simplicity, it's written for macOS only.
@@ -25,9 +33,15 @@ public enum E: Int {
25
33
@available ( macOS 10 . 55 , * )
26
34
case potentiallyUnavailable = - 3000
27
35
36
+ @available ( macOSApplicationExtension 10 . 56 , * )
37
+ case potentiallyUnavailableForExtensions = - 3001
38
+
28
39
@available ( macOS, unavailable)
29
40
case neverAvailable = - 4000
30
41
42
+ @available ( macOSApplicationExtension, unavailable)
43
+ case neverAvailableForExtensions = - 4001
44
+
31
45
@available ( macOS, obsoleted: 10.99 )
32
46
case notObsoleteYet = - 5000
33
47
@@ -46,13 +60,36 @@ public enum E: Int {
46
60
// CHECK: integer_literal $Builtin.IntLiteral, -3000
47
61
// CHECK: cond_br {{[^,]+}}, [[potentiallyUnavailable:bb[0-9]+]]
48
62
63
+ // CHECK: integer_literal $Builtin.IntLiteral, -3001
64
+ // CHECK: cond_br {{[^,]+}}, [[potentiallyUnavailableForExtensions:bb[0-9]+]]
65
+
66
+ // CHECK-NO-EXTENSION: integer_literal $Builtin.IntLiteral, -4001
67
+ // CHECK-NO-EXTENSION: cond_br {{[^,]+}}, [[neverAvailableForExtensions:bb[0-9]+]]
68
+
49
69
// CHECK: integer_literal $Builtin.IntLiteral, -5000
50
70
// CHECK: cond_br {{[^,]+}}, [[notObsoleteYet:bb[0-9]+]]
51
71
52
72
// CHECK: [[notObsoleteYet]]:
53
73
// CHECK-NOT: function_ref @$ss26_stdlib_isOSVersionAtLeastyBi1_Bw_BwBwtF
54
74
// CHECK: {{enum \$E|inject_enum_addr %[0-9]+ : \$\*E}}, #E.notObsoleteYet!enumelt
55
75
76
+ // CHECK-NO-EXTENSION: [[neverAvailableForExtensions]]:
77
+ // CHECK-NO-EXTENSION-NOT: function_ref @$ss26_stdlib_isOSVersionAtLeastyBi1_Bw_BwBwtF
78
+ // CHECK-NO-EXTENSION: {{enum \$E|inject_enum_addr %[0-9]+ : \$\*E}}, #E.neverAvailableForExtensions!enumelt
79
+
80
+ // CHECK: [[potentiallyUnavailableForExtensions]]:
81
+ // CHECK-NO-EXTENSION-NOT: function_ref @$ss26_stdlib_isOSVersionAtLeastyBi1_Bw_BwBwtF
82
+ // CHECK-NO-EXTENSION: {{enum \$E|inject_enum_addr %[0-9]+ : \$\*E}}, #E.potentiallyUnavailableForExtensions!enumelt
83
+ // CHECK-EXTENSION-NEXT: extend_lifetime
84
+ // CHECK-EXTENSION-NEXT: integer_literal $Builtin.Word, 10
85
+ // CHECK-EXTENSION-NEXT: integer_literal $Builtin.Word, 56
86
+ // CHECK-EXTENSION-NEXT: integer_literal $Builtin.Word, 0
87
+ // CHECK-EXTENSION: function_ref @$ss26_stdlib_isOSVersionAtLeastyBi1_Bw_BwBwtF
88
+ // CHECK-EXTENSION: cond_br {{[^,]+}}, [[potentiallyUnavailableForExtensions_newEnough:bb[0-9]+]],
89
+
90
+ // CHECK-EXTENSION: [[potentiallyUnavailableForExtensions_newEnough]]:
91
+ // CHECK-EXTENSION: {{enum \$E|inject_enum_addr %[0-9]+ : \$\*E}}, #E.potentiallyUnavailableForExtensions!enumelt
92
+
56
93
// CHECK: [[potentiallyUnavailable]]:
57
94
// CHECK-NEXT: extend_lifetime
58
95
// CHECK-NEXT: integer_literal $Builtin.Word, 10
@@ -84,6 +121,9 @@ public enum E: Int {
84
121
// Should not try to match neverAvailable's raw value
85
122
// NEGATIVE-NOT: integer_literal $Builtin.IntLiteral, -4000
86
123
124
+ // When building with -application-extension, should not try to match neverAvailableForExtensions's raw value
125
+ // NEGATIVE-EXTENSION-NOT: integer_literal $Builtin.IntLiteral, -4001
126
+
87
127
// Should not try to match nowObsolete's raw value
88
128
// NEGATIVE-NOT: integer_literal $Builtin.IntLiteral, -6000
89
129
0 commit comments