diff --git a/lib/ClangImporter/ClangImporter.cpp b/lib/ClangImporter/ClangImporter.cpp index 43ea6cce93991..068c5c58b4b8f 100644 --- a/lib/ClangImporter/ClangImporter.cpp +++ b/lib/ClangImporter/ClangImporter.cpp @@ -8782,7 +8782,7 @@ ClangDeclExplicitSafety::evaluate(Evaluator &evaluator, // Explicitly unsafe. auto decl = desc.decl; - if (hasUnsafeAPIAttr(decl) || hasSwiftAttribute(decl, "unsafe")) + if (hasSwiftAttribute(decl, "unsafe")) return ExplicitSafety::Unsafe; // Explicitly safe. diff --git a/test/Interop/Cxx/class/safe-interop-mode.swift b/test/Interop/Cxx/class/safe-interop-mode.swift index 7f36ca1c22c30..ad5d2c9f249b7 100644 --- a/test/Interop/Cxx/class/safe-interop-mode.swift +++ b/test/Interop/Cxx/class/safe-interop-mode.swift @@ -93,6 +93,12 @@ using TTakePtr = TTake; using TTakeSafeTuple = TTake; using TTakeUnsafeTuple = TTake; +struct HoldsShared { + SharedObject* obj; + + SharedObject* getObj() const SWIFT_RETURNS_INDEPENDENT_VALUE; +}; + //--- test.swift import Test @@ -183,8 +189,9 @@ func useSharedReference(frt: SharedObject, x: OwnedData) { } @available(SwiftStdlib 5.8, *) -func useSharedReference(frt: DerivedFromSharedObject) { +func useSharedReference(frt: DerivedFromSharedObject, h: HoldsShared) { let _ = frt + let _ = h.getObj() } func useTTakeInt(x: TTakeInt) {