forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathr17963339.swift
48 lines (34 loc) · 979 Bytes
/
r17963339.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// RUN: %target-run-simple-swift
// REQUIRES: executable_test
protocol MyClassDelegate: class {
func didFindCureForCancer()
}
class MyClass {
weak var delegate: MyClassDelegate?
init() {}
func findCure() {
// Crashes here with EXC_BAD_ACCESS. Why? -- Note that it also crashes if I replace the following line with `if let d = delegate { d.didFindCureForCancer() }`
delegate?.didFindCureForCancer()
}
deinit { print("MyClass died") }
}
class AppDelegate: MyClassDelegate {
func application() -> Bool {
print("starting")
let cureFinder = MyClass()
cureFinder.delegate = self
cureFinder.findCure()
return true
}
func didFindCureForCancer() {
print("about time...")
}
deinit { print("AppDelegate died") }
}
_ = {
AppDelegate().application()
}()
// CHECK-LABEL: starting
// CHECK-NEXT: about time...
// CHECK-NEXT: MyClass died
// CHECK-NEXT: AppDelegate died