mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
39 lines
959 B
Swift
39 lines
959 B
Swift
// RUN: %target-run-simple-swift foo | FileCheck %s
|
|
// REQUIRES: executable_test
|
|
|
|
// REQUIRES: objc_interop
|
|
|
|
// The Objective-C runtime does not implement the autorelease
|
|
// optimization on i386, even in the iOS simulator.
|
|
// XFAIL: CPU=i386
|
|
|
|
// XFAIL: interpret
|
|
|
|
import Foundation
|
|
|
|
class PrintOnDeinit: NSObject {
|
|
// Result should get autoreleased.
|
|
dynamic class func create() -> PrintOnDeinit {
|
|
return PrintOnDeinit()
|
|
}
|
|
|
|
deinit { print("object died") }
|
|
}
|
|
func useTemp() {
|
|
let f = PrintOnDeinit.create()
|
|
}
|
|
|
|
// objc_retainAutoreleasedReturnValue will fail to reclaim the first
|
|
// object autoreleased from each shared object on x86_64, so prime it.
|
|
autoreleasepool { useTemp() }
|
|
autoreleasepool {
|
|
print("autorelease test begin")
|
|
useTemp()
|
|
print("after call to useTemp")
|
|
}
|
|
print("autorelease test end")
|
|
// CHECK: autorelease test begin
|
|
// CHECK-NEXT: object died
|
|
// CHECK-NEXT: after call to useTemp
|
|
// CHECK-NEXT: autorelease test end
|