Skip to content

Commit 600dcd0

Browse files
authored
Expose immortal String initialization for Foundation (#78661)
1 parent 638950c commit 600dcd0

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

stdlib/public/core/StringBridge.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,19 @@ internal func _SwiftCreateBridgedString_DoNotCall(
661661
return Unmanaged<AnyObject>.passRetained(str._bridgeToObjectiveCImpl())
662662
}
663663

664+
@available(SwiftStdlib 6.1, *)
665+
@_spi(Foundation) public func _SwiftCreateImmortalString_ForFoundation(
666+
buffer: UnsafeBufferPointer<UInt8>,
667+
isASCII: Bool
668+
) -> String? {
669+
switch validateUTF8(buffer) {
670+
case .success(let extraInfo):
671+
return String(_StringGuts(buffer, isASCII: extraInfo.isASCII))
672+
default:
673+
return nil
674+
}
675+
}
676+
664677
// At runtime, this class is derived from `__SwiftNativeNSStringBase`,
665678
// which is derived from `NSString`.
666679
//

test/abi/macOS/arm64/stdlib.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -827,3 +827,6 @@ Added: _$ss4SlabVsRi__rlE5countSivpZMV
827827

828828
// Slab._storage _read accessor
829829
Added: _$ss4SlabVsRi__rlE8_storagexq_BVvr
830+
831+
// Shared string creation for Foundation
832+
Added: _$ss40_SwiftCreateImmortalString_ForFoundation6buffer7isASCIISSSgSRys5UInt8VG_SbtF

test/abi/macOS/x86_64/stdlib.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,3 +828,6 @@ Added: _$ss4SlabVsRi__rlE5countSivpZMV
828828

829829
// Slab._storage _read accessor
830830
Added: _$ss4SlabVsRi__rlE8_storagexq_BVvr
831+
832+
// Shared string creation for Foundation
833+
Added: _$ss40_SwiftCreateImmortalString_ForFoundation6buffer7isASCIISSSgSRys5UInt8VG_SbtF

0 commit comments

Comments
 (0)