Skip to content

Commit 3ee222f

Browse files
authored
Merge pull request #82809 from swiftlang/egorzhdan/optional-pointee-fix
[cxx-interop] Test `std::optional` with AddressableParameters
2 parents db18a72 + 00ed3bd commit 3ee222f

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

test/Interop/Cxx/stdlib/use-std-optional.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=swift-5.9)
22
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=swift-6)
33
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=upcoming-swift)
4+
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=upcoming-swift -enable-experimental-feature AddressableParameters)
45
// RUN: %target-run-simple-swift(-I %S/Inputs -Xfrontend -cxx-interoperability-mode=upcoming-swift -Xcc -std=c++20)
56
//
67
// REQUIRES: executable_test
8+
// REQUIRES: swift_feature_AddressableParameters
79

810
// Undefined hidden symbol to C++ voidify in libcxx
911
// rdar://121551667
@@ -65,10 +67,18 @@ StdOptionalTestSuite.test("std::optional init(_:Wrapped)") {
6567

6668
// FIXME: making these variables immutable triggers a miscompile on Linux
6769
// (https://github.com/swiftlang/swift/issues/82765)
68-
var optBoolT = StdOptionalBool(true)
69-
var optBoolF = StdOptionalBool(false)
70+
var optBoolTMutable = StdOptionalBool(true)
71+
var optBoolFMutable = StdOptionalBool(false)
72+
expectTrue(optBoolTMutable.pointee)
73+
expectFalse(optBoolFMutable.pointee)
74+
75+
// If AddressableParameters are enabled, this issue does not happen.
76+
#if hasFeature(AddressableParameters)
77+
let optBoolT = StdOptionalBool(true)
78+
let optBoolF = StdOptionalBool(false)
7079
expectTrue(optBoolT.pointee)
7180
expectFalse(optBoolF.pointee)
81+
#endif
7282

7383
let optString = StdOptionalString(std.string("abc"))
7484
expectEqual(std.string("abc"), optString.pointee)

0 commit comments

Comments
 (0)