mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Some foreign reference types such as IUnknown define retain/release operations as methods of the type.
Previously Swift only supported retain/release operations as standalone functions.
The syntax for member functions would be `SWIFT_SHARED_REFERENCE(.doRetain, .doRelease)`.
rdar://160696723
(cherry picked from commit e78ce6165f)
50 lines
1.5 KiB
Swift
50 lines
1.5 KiB
Swift
// RUN: %target-swift-ide-test -print-module -cxx-interoperability-mode=upcoming-swift -I %swift_src_root/lib/ClangImporter/SwiftBridging -module-to-print=LifetimeOperationMethods -I %S/Inputs -source-filename=x | %FileCheck %s
|
|
|
|
// CHECK: class RefCountedBox {
|
|
// CHECK: func doRetain()
|
|
// CHECK: func doRelease()
|
|
// CHECK: }
|
|
// CHECK: class DerivedRefCountedBox {
|
|
// CHECK: func doRetain()
|
|
// CHECK: func doRelease()
|
|
// CHECK: }
|
|
|
|
// CHECK: class DerivedHasRelease {
|
|
// CHECK: func doRelease()
|
|
// CHECK: func doRetainInBase()
|
|
// CHECK: }
|
|
|
|
// CHECK: class TemplatedDerivedHasRelease<CFloat> {
|
|
// CHECK: var value: Float
|
|
// CHECK: func doReleaseTemplated()
|
|
// CHECK: func doRetainInBase()
|
|
// CHECK: }
|
|
// CHECK: class TemplatedDerivedHasRelease<CInt> {
|
|
// CHECK: var value: Int32
|
|
// CHECK: func doReleaseTemplated()
|
|
// CHECK: func doRetainInBase()
|
|
// CHECK: }
|
|
|
|
// CHECK: class CRTPDerived {
|
|
// CHECK: var value: Int32
|
|
// CHECK: }
|
|
|
|
// CHECK: class VirtualRetainRelease {
|
|
// CHECK: func doRetainVirtual()
|
|
// CHECK: func doReleaseVirtual()
|
|
// CHECK: }
|
|
// CHECK: class DerivedVirtualRetainRelease {
|
|
// CHECK: func doRetainVirtual()
|
|
// CHECK: func doReleaseVirtual()
|
|
// CHECK: }
|
|
|
|
// CHECK: class PureVirtualRetainRelease {
|
|
// CHECK: func doRetainPure()
|
|
// CHECK: func doReleasePure()
|
|
// CHECK: }
|
|
// CHECK: class DerivedPureVirtualRetainRelease {
|
|
// CHECK: func doRetainPure()
|
|
// CHECK: func doReleasePure()
|
|
// CHECK: var refCount: Int32
|
|
// CHECK: }
|