Skip to content

Commit 92c9729

Browse files
committed
[cxx-interop] Fix lifetime-operation-methods.swift in optimized mode
1 parent 172b998 commit 92c9729

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

test/Interop/Cxx/foreign-reference/Inputs/lifetime-operation-methods.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,18 +62,18 @@ struct CRTPDerived : CRTPBase<CRTPDerived> {
6262
struct VirtualRetainRelease {
6363
int value;
6464
mutable int refCount = 1;
65+
mutable bool calledBase = false;
6566
VirtualRetainRelease(int value) : value(value) {}
6667

67-
virtual void doRetainVirtual() const { refCount++; }
68-
virtual void doReleaseVirtual() const { refCount--; }
68+
virtual void doRetainVirtual() const { refCount++; calledBase = true; }
69+
virtual void doReleaseVirtual() const { refCount--; calledBase = true; }
6970
virtual ~VirtualRetainRelease() = default;
7071
} SWIFT_SHARED_REFERENCE(.doRetainVirtual, .doReleaseVirtual);
7172

7273
struct DerivedVirtualRetainRelease : VirtualRetainRelease {
7374
DerivedVirtualRetainRelease(int value) : VirtualRetainRelease(value) {}
7475

75-
mutable bool calledDerived = false;
76-
void doRetainVirtual() const override { refCount++; calledDerived = true; }
76+
void doRetainVirtual() const override { refCount++; }
7777
void doReleaseVirtual() const override { refCount--; }
7878
};
7979

test/Interop/Cxx/foreign-reference/lifetime-operation-methods.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ LifetimeMethodsTestSuite.test("virtual retain/release") {
6363
LifetimeMethodsTestSuite.test("overridden virtual retain/release") {
6464
let a = DerivedVirtualRetainRelease(456)
6565
expectEqual(a.value, 456)
66-
expectTrue(a.calledDerived)
66+
expectFalse(a.calledBase) // in optimized builds, we might not call retain/release at all
6767
expectTrue(a.refCount > 0)
6868
expectTrue(a.refCount < 10) // optimizations would affect the exact number
6969
}

0 commit comments

Comments
 (0)