- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathdefer.swift
33 lines (27 loc) · 690 Bytes
/
defer.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// RUN: %target-run-simple-swift | %FileCheck %s
// REQUIRES: executable_test
do{
defer{print("deferred 1")}
defer{print("deferred 2")}
print("start!")
// CHECK-NOT: deferred
// CHECK-LABEL: start!
// CHECK-NEXT: deferred 2
// CHECK-NEXT: deferred 1
}
// ensure #function ignores defer blocks
do{
print("top-level #function")
letname= #function
defer{print(name == #function ?"good":"bad")}
// CHECK-LABEL: top-level #function
// CHECK-NEXT: good
}
func foo(){
print("foo()")
letname= #function
defer{print(name == #function ?"good":"bad")}
// CHECK-LABEL: foo()
// CHECK-NEXT: good
}
foo()