mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
67 lines
1.5 KiB
Swift
67 lines
1.5 KiB
Swift
// RUN: rm -rf %t && mkdir -p %t
|
|
// RUN: %target-build-swift -parse-stdlib %s -o %t/a.out
|
|
// RUN: %target-run %t/a.out | FileCheck %s
|
|
// REQUIRES: executable_test
|
|
|
|
import Swift
|
|
import SwiftShims
|
|
|
|
typealias _HeapObject = SwiftShims.HeapObject
|
|
|
|
class C {
|
|
var value: AnyObject? = nil
|
|
deinit { print("deallocated") }
|
|
}
|
|
|
|
|
|
print("starting")
|
|
var ptr = Builtin.castToNativeObject(C())
|
|
|
|
//CHECK: 1. true
|
|
print(" 1. \(_getBool(Builtin.isUnique(&ptr))))")
|
|
//CHECK: 2. true
|
|
print(" 2. \(_getBool(Builtin.isUniqueOrPinned(&ptr))))")
|
|
|
|
var ptr2 : Builtin.NativeObject? = ptr
|
|
|
|
//CHECK: 3. false
|
|
print(" 3. \(_getBool(Builtin.isUnique(&ptr))))")
|
|
//CHECK: 4. false
|
|
print(" 4. \(_getBool(Builtin.isUniqueOrPinned(&ptr))))")
|
|
|
|
ptr2 = nil
|
|
|
|
//CHECK: 5. true
|
|
print(" 5. \(_getBool(Builtin.isUnique(&ptr)))")
|
|
//CHECK: 6. true
|
|
print(" 6. \(_getBool(Builtin.isUniqueOrPinned(&ptr)))")
|
|
|
|
ptr2 = ptr
|
|
|
|
//CHECK: 7. false
|
|
print(" 7. \(_getBool(Builtin.isUnique(&ptr)))")
|
|
//CHECK: 8. false
|
|
print(" 8. \(_getBool(Builtin.isUniqueOrPinned(&ptr)))")
|
|
|
|
let token : Builtin.NativeObject? = Builtin.tryPin(ptr)
|
|
|
|
//CHECK: 9. false
|
|
print(" 9. \(_getBool(Builtin.isUnique(&ptr)))")
|
|
//CHECK: 10. true
|
|
print("10. \(_getBool(Builtin.isUniqueOrPinned(&ptr)))")
|
|
|
|
Builtin.unpin(token)
|
|
|
|
//CHECK: 11. false
|
|
print("11. \(_getBool(Builtin.isUnique(&ptr)))")
|
|
//CHECK: 12. false
|
|
print("12. \(_getBool(Builtin.isUniqueOrPinned(&ptr)))")
|
|
|
|
ptr2 = ptr
|
|
|
|
//CHECK: 13. false
|
|
print("13. \(_getBool(Builtin.isUnique(&ptr)))")
|
|
//CHECK: 14. false
|
|
print("14. \(_getBool(Builtin.isUniqueOrPinned(&ptr)))")
|
|
|