@@ -1509,15 +1509,34 @@ extension Array {
15091509}
15101510
15111511extension Array {
1512- /// Implementation for Array(unsafeUninitializedCapacity:initializingWith:)
1512+ /// Implementation preserved (for ABI reasons) for:
1513+ /// Array(unsafeUninitializedCapacity:initializingWith:)
15131514 /// and ContiguousArray(unsafeUninitializedCapacity:initializingWith:)
1514- @inlinable
1515+ /*@_spi(SwiftStdlibLegacyABI)*/ @available ( swift, obsoleted: 1 )
1516+ @inlinable // inlinable is necessary for prespecialization
15151517 internal init (
15161518 _unsafeUninitializedCapacity: Int ,
15171519 initializingWith initializer: (
15181520 _ buffer: inout UnsafeMutableBufferPointer < Element > ,
15191521 _ initializedCount: inout Int ) throws -> Void
15201522 ) rethrows {
1523+ try unsafe self. init (
1524+ _unsafeUninitializedCapacity: _unsafeUninitializedCapacity,
1525+ initializingWithTypedThrowsInitializer: initializer
1526+ )
1527+ }
1528+
1529+ /// Implementation for:
1530+ /// Array(unsafeUninitializedCapacity:initializingWith:)
1531+ /// and ContiguousArray(unsafeUninitializedCapacity:initializingWith:)
1532+ @_alwaysEmitIntoClient
1533+ internal init < E: Error > (
1534+ _unsafeUninitializedCapacity: Int ,
1535+ initializingWithTypedThrowsInitializer initializer: (
1536+ _ buffer: inout UnsafeMutableBufferPointer < Element > ,
1537+ _ initializedCount: inout Int
1538+ ) throws ( E) -> Void
1539+ ) throws ( E) {
15211540 var firstElementAddress : UnsafeMutablePointer < Element >
15221541 unsafe ( self , firstElementAddress) =
15231542 unsafe Array. _allocateUninitialized ( _unsafeUninitializedCapacity)
@@ -1567,15 +1586,17 @@ extension Array {
15671586 /// which begins as zero. Set `initializedCount` to the number of
15681587 /// elements you initialize.
15691588 @_alwaysEmitIntoClient @inlinable
1570- public init (
1589+ public init < E : Error > (
15711590 unsafeUninitializedCapacity: Int ,
15721591 initializingWith initializer: (
15731592 _ buffer: inout UnsafeMutableBufferPointer < Element > ,
1574- _ initializedCount: inout Int ) throws -> Void
1575- ) rethrows {
1593+ _ initializedCount: inout Int
1594+ ) throws ( E) -> Void
1595+ ) throws ( E) {
15761596 self = try unsafe Array(
15771597 _unsafeUninitializedCapacity: unsafeUninitializedCapacity,
1578- initializingWith: initializer)
1598+ initializingWithTypedThrowsInitializer: initializer
1599+ )
15791600 }
15801601
15811602 // Superseded by the typed-throws version of this function, but retained
0 commit comments