Files
swift-mirror/test/Interpreter/moveonly_escaping_capture_lifetimes.swift
Kavon Farvardin 0420310623 NCGenerics: it's no longer "experimental"
resolves rdar://127701059
2024-05-08 10:49:12 -07:00

49 lines
806 B
Swift

// RUN: %target-run-simple-swift | %FileCheck %s
// RUN: %target-run-simple-swift(-O -Xfrontend -sil-verify-all) | %FileCheck %s
// REQUIRES: executable_test
@_moveOnly
struct MO {
var x: Int
deinit { print("dying \(x)") }
}
var f: () -> () = {}
func foo(x: consuming MO) {
var counter = 42
f = {
x = MO(x: counter)
counter += 1
}
}
func main() {
let x = MO(x: 69)
// CHECK: a
print("a")
foo(x: x)
// CHECK-NEXT: b
print("b")
// CHECK-NEXT: dying 69
// CHECK-NEXT: c
f()
print("c")
// CHECK-NEXT: dying 42
// CHECK-NEXT: d
f()
print("d")
// CHECK-NEXT: dying 43
// CHECK-NEXT: e
f()
print("e")
// CHECK-NEXT: dying 44
// CHECK-NEXT: f
f = {}
print("f")
}
main()
print("done")