Skip to content

Commit 3c1f3d5

Browse files
authored
Merge pull request #84980 from swiftlang/unsafe-independent-value
[cxx-interop] Do not treat SWIFT_RETURNS_INDEPENDENT_VALUE unsafe
2 parents c8fc005 + 69f0a7d commit 3c1f3d5

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

lib/ClangImporter/ClangImporter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8782,7 +8782,7 @@ ClangDeclExplicitSafety::evaluate(Evaluator &evaluator,
87828782

87838783
// Explicitly unsafe.
87848784
auto decl = desc.decl;
8785-
if (hasUnsafeAPIAttr(decl) || hasSwiftAttribute(decl, "unsafe"))
8785+
if (hasSwiftAttribute(decl, "unsafe"))
87868786
return ExplicitSafety::Unsafe;
87878787

87888788
// Explicitly safe.

test/Interop/Cxx/class/safe-interop-mode.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ using TTakePtr = TTake<int *>;
9393
using TTakeSafeTuple = TTake<SafeTuple>;
9494
using TTakeUnsafeTuple = TTake<UnsafeTuple>;
9595

96+
struct HoldsShared {
97+
SharedObject* obj;
98+
99+
SharedObject* getObj() const SWIFT_RETURNS_INDEPENDENT_VALUE;
100+
};
101+
96102
//--- test.swift
97103

98104
import Test
@@ -183,8 +189,9 @@ func useSharedReference(frt: SharedObject, x: OwnedData) {
183189
}
184190

185191
@available(SwiftStdlib 5.8, *)
186-
func useSharedReference(frt: DerivedFromSharedObject) {
192+
func useSharedReference(frt: DerivedFromSharedObject, h: HoldsShared) {
187193
let _ = frt
194+
let _ = h.getObj()
188195
}
189196

190197
func useTTakeInt(x: TTakeInt) {

0 commit comments

Comments
 (0)