1
- // RUN: %target-swift-frontend -typecheck -dump-type-refinement-contexts %s > %t.dump 2>&1
1
+ // RUN: %target-swift-frontend -typecheck -dump-type-refinement-contexts -target %target-cpu-apple-macosx10.50 %s > %t.dump 2>&1
2
2
// RUN: %FileCheck --strict-whitespace %s < %t.dump
3
3
4
4
// REQUIRES: OS=macosx
5
5
6
- // CHECK: {{^}}(root versions=[10.{{[0-9]+}} .0,+Inf)
6
+ // CHECK: {{^}}(root versions=[10.50 .0,+Inf) explicit=all
7
7
8
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=SomeClass
9
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=someMethod()
10
- // CHECK-NEXT: {{^}} (decl versions=[10.53,+Inf) decl=someInnerFunc()
11
- // CHECK-NEXT: {{^}} (decl versions=[10.53,+Inf) decl=InnerClass
12
- // CHECK-NEXT: {{^}} (decl versions=[10.54,+Inf) decl=innerClassMethod
13
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=someStaticProperty
14
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=someComputedProperty
15
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=someOtherMethod()
8
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=SomeClass
9
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=someMethod()
10
+ // CHECK-NEXT: {{^}} (decl versions=[10.53,+Inf) explicit=[10.53,+Inf) decl=someInnerFunc()
11
+ // CHECK-NEXT: {{^}} (decl versions=[10.53,+Inf) explicit=[10.53,+Inf) decl=InnerClass
12
+ // CHECK-NEXT: {{^}} (decl versions=[10.54,+Inf) explicit=[10.54,+Inf) decl=innerClassMethod
13
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=someStaticProperty
14
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=someComputedProperty
15
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=someOtherMethod()
16
16
@available ( OSX 10 . 51 , * )
17
17
class SomeClass {
18
18
@available ( OSX 10 . 52 , * )
@@ -43,13 +43,13 @@ class SomeClass {
43
43
func someOtherMethod( ) { }
44
44
}
45
45
46
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=someFunction()
46
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=someFunction()
47
47
@available ( OSX 10 . 51 , * )
48
48
func someFunction( ) { }
49
49
50
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=SomeProtocol
51
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=protoMethod()
52
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=protoProperty
50
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=SomeProtocol
51
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=protoMethod()
52
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=protoProperty
53
53
@available ( OSX 10 . 51 , * )
54
54
protocol SomeProtocol {
55
55
@available ( OSX 10 . 52 , * )
@@ -59,26 +59,26 @@ protocol SomeProtocol {
59
59
var protoProperty : Int { get }
60
60
}
61
61
62
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=extension.SomeClass
63
- // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) decl=someExtensionFunction()
62
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=extension.SomeClass
63
+ // CHECK-NEXT: {{^}} (decl versions=[10.52,+Inf) explicit=[10.52,+Inf) decl=someExtensionFunction()
64
64
@available ( OSX 10 . 51 , * )
65
65
extension SomeClass {
66
66
@available ( OSX 10 . 52 , * )
67
67
func someExtensionFunction( ) { }
68
68
}
69
69
70
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=functionWithStmtCondition
71
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.52,+Inf)
72
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.53,+Inf)
73
- // CHECK-NEXT: {{^}} (if_then versions=[10.53,+Inf)
74
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.54,+Inf)
75
- // CHECK-NEXT: {{^}} (if_then versions=[10.54,+Inf)
76
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.55,+Inf)
77
- // CHECK-NEXT: {{^}} (decl versions=[10.55,+Inf) decl=funcInGuardElse()
78
- // CHECK-NEXT: {{^}} (guard_fallthrough versions=[10.55,+Inf)
79
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.56,+Inf)
80
- // CHECK-NEXT: {{^}} (guard_fallthrough versions=[10.56,+Inf)
81
- // CHECK-NEXT: {{^}} (decl versions=[10.57,+Inf) decl=funcInInnerIfElse()
70
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=functionWithStmtCondition
71
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.52,+Inf) explicit=[10.52,+Inf)
72
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.53,+Inf) explicit=[10.53,+Inf)
73
+ // CHECK-NEXT: {{^}} (if_then versions=[10.53,+Inf) explicit=[10.53,+Inf)
74
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.54,+Inf) explicit=[10.54,+Inf)
75
+ // CHECK-NEXT: {{^}} (if_then versions=[10.54,+Inf) explicit=[10.54,+Inf)
76
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.55,+Inf) explicit=[10.55,+Inf)
77
+ // CHECK-NEXT: {{^}} (decl versions=[10.55,+Inf) explicit=[10.55,+Inf) decl=funcInGuardElse()
78
+ // CHECK-NEXT: {{^}} (guard_fallthrough versions=[10.55,+Inf) explicit=[10.55,+Inf)
79
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.56,+Inf) explicit=[10.56,+Inf)
80
+ // CHECK-NEXT: {{^}} (guard_fallthrough versions=[10.56,+Inf) explicit=[10.56,+Inf)
81
+ // CHECK-NEXT: {{^}} (decl versions=[10.57,+Inf) explicit=[10.57,+Inf) decl=funcInInnerIfElse()
82
82
@available ( OSX 10 . 51 , * )
83
83
func functionWithStmtCondition( ) {
84
84
if #available( OSX 10 . 52 , * ) ,
@@ -97,11 +97,11 @@ func functionWithStmtCondition() {
97
97
}
98
98
}
99
99
100
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=functionWithUnnecessaryStmtCondition
101
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.53,+Inf)
102
- // CHECK-NEXT: {{^}} (if_then versions=[10.53,+Inf)
103
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.54,+Inf)
104
- // CHECK-NEXT: {{^}} (if_then versions=[10.54,+Inf)
100
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=functionWithUnnecessaryStmtCondition
101
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.53,+Inf) explicit=[10.53,+Inf)
102
+ // CHECK-NEXT: {{^}} (if_then versions=[10.53,+Inf) explicit=[10.53,+Inf)
103
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.54,+Inf) explicit=[10.54,+Inf)
104
+ // CHECK-NEXT: {{^}} (if_then versions=[10.54,+Inf) explicit=[10.54,+Inf)
105
105
106
106
@available ( OSX 10 . 51 , * )
107
107
func functionWithUnnecessaryStmtCondition( ) {
@@ -127,13 +127,13 @@ func functionWithUnnecessaryStmtCondition() {
127
127
}
128
128
}
129
129
130
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=functionWithUnnecessaryStmtConditionsHavingElseBranch
131
- // CHECK-NEXT: {{^}} (if_else versions=empty
132
- // CHECK-NEXT: {{^}} (decl versions=empty decl=funcInInnerIfElse()
133
- // CHECK-NEXT: {{^}} (if_else versions=empty
134
- // CHECK-NEXT: {{^}} (guard_else versions=empty
135
- // CHECK-NEXT: {{^}} (guard_else versions=empty
136
- // CHECK-NEXT: {{^}} (if_else versions=empty
130
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=functionWithUnnecessaryStmtConditionsHavingElseBranch
131
+ // CHECK-NEXT: {{^}} (if_else versions=empty explicit=empty
132
+ // CHECK-NEXT: {{^}} (decl versions=empty explicit=empty decl=funcInInnerIfElse()
133
+ // CHECK-NEXT: {{^}} (if_else versions=empty explicit=empty
134
+ // CHECK-NEXT: {{^}} (guard_else versions=empty explicit=empty
135
+ // CHECK-NEXT: {{^}} (guard_else versions=empty explicit=empty
136
+ // CHECK-NEXT: {{^}} (if_else versions=empty explicit=empty
137
137
138
138
@available ( OSX 10 . 51 , * )
139
139
func functionWithUnnecessaryStmtConditionsHavingElseBranch( p: Int ? ) {
@@ -180,10 +180,10 @@ func functionWithUnnecessaryStmtConditionsHavingElseBranch(p: Int?) {
180
180
181
181
}
182
182
183
- // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) decl=functionWithWhile()
184
- // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.52,+Inf)
185
- // CHECK-NEXT: {{^}} (while_body versions=[10.52,+Inf)
186
- // CHECK-NEXT: {{^}} (decl versions=[10.54,+Inf) decl=funcInWhileBody()
183
+ // CHECK-NEXT: {{^}} (decl versions=[10.51,+Inf) explicit=[10.51,+Inf) decl=functionWithWhile()
184
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.52,+Inf) explicit=[10.52,+Inf)
185
+ // CHECK-NEXT: {{^}} (while_body versions=[10.52,+Inf) explicit=[10.52,+Inf)
186
+ // CHECK-NEXT: {{^}} (decl versions=[10.54,+Inf) explicit=[10.54,+Inf) decl=funcInWhileBody()
187
187
@available ( OSX 10 . 51 , * )
188
188
func functionWithWhile( ) {
189
189
while #available( OSX 10 . 52 , * ) ,
@@ -192,3 +192,44 @@ func functionWithWhile() {
192
192
func funcInWhileBody( ) { }
193
193
}
194
194
}
195
+
196
+ // CHECK-NEXT: {{^}} (decl versions=[10.50.0,+Inf) explicit=[10.10,+Inf) decl=olderFunction()
197
+ @available ( macOS 10 . 10 , * )
198
+ public func olderFunction( ) {
199
+ }
200
+
201
+ // CHECK-NEXT: {{^}} (decl versions=[10.10,+Inf) explicit=[10.10,+Inf) decl=inlinableFunction()
202
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.55,+Inf) explicit=[10.55,+Inf)
203
+ // CHECK-NEXT: {{^}} (if_then versions=[10.55,+Inf) explicit=[10.55,+Inf)
204
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.15,+Inf)
205
+ // CHECK-NEXT: {{^}} (if_then versions=[10.15,+Inf) explicit=[10.15,+Inf)
206
+ // CHECK-NEXT: {{^}} (condition_following_availability versions=[10.15,+Inf) explicit=[10.15,+Inf)
207
+ // CHECK-NEXT: {{^}} (guard_fallthrough versions=[10.15,+Inf) explicit=[10.15,+Inf)
208
+ @available ( macOS 10 . 10 , * )
209
+ @inlinable
210
+ public func inlinableFunction( ) {
211
+ if #available( macOS 10 . 55 , * ) { } else { }
212
+
213
+ if #available( macOS 10 . 15 , * ) { }
214
+
215
+ guard #available( macOS 10 . 15 , * ) else { }
216
+
217
+ func nestedFunc( ) { }
218
+ }
219
+
220
+ // CHECK-NEXT: {{^}} (decl versions=[10.50.0,+Inf) explicit=[10.10,+Inf) decl=SomeOlderClass
221
+ // CHECK-NEXT: {{^}} (decl versions=[10.10,+Inf) explicit=[10.10,+Inf) decl=someInlinableMethod()
222
+ // CHECK-NEXT: {{^}} (decl versions=[10.15,+Inf) explicit=[10.15,+Inf) decl=someOtherInlinableMethod()
223
+ // CHECK-NEXT: {{^}} (decl versions=[10.50.0,+Inf) explicit=[10.15,+Inf) decl=someMethod()
224
+ @available ( OSX 10 . 10 , * )
225
+ class SomeOlderClass {
226
+ @inlinable
227
+ func someInlinableMethod( ) { }
228
+
229
+ @available ( OSX 10 . 15 , * )
230
+ @inlinable
231
+ func someOtherInlinableMethod( ) { }
232
+
233
+ @available ( OSX 10 . 15 , * )
234
+ func someMethod( ) { }
235
+ }
0 commit comments