blob: 828e40ea163202af1b85dda4c16438f9e5860461 [file] [log] [blame]
// 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