[interop][SwiftToCxx] retain & release class values when a C++ class reference is copy assigned

This commit is contained in:
Alex Lorenz
2022-08-02 17:52:30 +01:00
parent e289865861
commit c332a90a8a
3 changed files with 38 additions and 1 deletions

View File

@@ -74,6 +74,24 @@ int main() {
assert(getRetainCount(x) == 1);
}
// CHECK-NEXT: init ClassWithIntField
// CHECK-NEXT: destroy ClassWithIntField
{
auto x = returnClassWithIntField();
{
auto x2 = returnClassWithIntField();
assert(getRetainCount(x2) == 1);
assert(getRetainCount(x) == 1);
x = x2;
assert(getRetainCount(x) == 2);
}
takeClassWithIntField(x);
assert(getRetainCount(x) == 1);
}
// CHECK-NEXT: init ClassWithIntField
// CHECK-NEXT: init ClassWithIntField
// CHECK-NEXT: destroy ClassWithIntField
// CHECK-NEXT: ClassWithIntField: 0;
// CHECK-NEXT: destroy ClassWithIntField
return 0;
}