File tree Expand file tree Collapse file tree 1 file changed +10
-0
lines changed
test/SILOptimizer/lifetime_dependence Expand file tree Collapse file tree 1 file changed +10
-0
lines changed Original file line number Diff line number Diff line change @@ -58,6 +58,8 @@ internal func _overrideLifetime<
58
58
dependent
59
59
}
60
60
61
+ struct NotEscapable : ~ Escapable { }
62
+
61
63
// Lifetime dependence semantics by example.
62
64
public struct Span < T> : ~ Escapable {
63
65
private var base : UnsafePointer < T > ?
@@ -275,6 +277,14 @@ struct Container<T> {
275
277
let count : Int
276
278
}
277
279
280
+ // Dependence on an empty initialized value should be scoped to variable decl.
281
+ @lifetime ( copy x)
282
+ func f( x: NotEscapable ) -> NotEscapable {
283
+ let local = NotEscapable ( ) // expected-error {{lifetime-dependent variable 'local' escapes its scope}}
284
+ // expected-note @-1{{it depends on the lifetime of this parent value}}
285
+ return local // expected-note {{this use causes the lifetime-dependent value to escape}}
286
+ }
287
+
278
288
// =============================================================================
279
289
// Scoped dependence on values
280
290
// =============================================================================
You can’t perform that action at this time.
0 commit comments