@@ -1509,15 +1509,34 @@ extension Array {
1509
1509
}
1510
1510
1511
1511
extension Array {
1512
- /// Implementation for Array(unsafeUninitializedCapacity:initializingWith:)
1512
+ /// Implementation preserved (for ABI reasons) for:
1513
+ /// Array(unsafeUninitializedCapacity:initializingWith:)
1513
1514
/// and ContiguousArray(unsafeUninitializedCapacity:initializingWith:)
1514
- @inlinable
1515
+ /*@_spi(SwiftStdlibLegacyABI)*/ @available ( swift, obsoleted: 1 )
1516
+ @inlinable // inlinable is necessary for prespecialization
1515
1517
internal init (
1516
1518
_unsafeUninitializedCapacity: Int ,
1517
1519
initializingWith initializer: (
1518
1520
_ buffer: inout UnsafeMutableBufferPointer < Element > ,
1519
1521
_ initializedCount: inout Int ) throws -> Void
1520
1522
) 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) {
1521
1540
var firstElementAddress : UnsafeMutablePointer < Element >
1522
1541
unsafe ( self , firstElementAddress) =
1523
1542
unsafe Array. _allocateUninitialized ( _unsafeUninitializedCapacity)
@@ -1567,15 +1586,17 @@ extension Array {
1567
1586
/// which begins as zero. Set `initializedCount` to the number of
1568
1587
/// elements you initialize.
1569
1588
@_alwaysEmitIntoClient @inlinable
1570
- public init (
1589
+ public init < E : Error > (
1571
1590
unsafeUninitializedCapacity: Int ,
1572
1591
initializingWith initializer: (
1573
1592
_ buffer: inout UnsafeMutableBufferPointer < Element > ,
1574
- _ initializedCount: inout Int ) throws -> Void
1575
- ) rethrows {
1593
+ _ initializedCount: inout Int
1594
+ ) throws ( E) -> Void
1595
+ ) throws ( E) {
1576
1596
self = try unsafe Array(
1577
1597
_unsafeUninitializedCapacity: unsafeUninitializedCapacity,
1578
- initializingWith: initializer)
1598
+ initializingWithTypedThrowsInitializer: initializer
1599
+ )
1579
1600
}
1580
1601
1581
1602
// Superseded by the typed-throws version of this function, but retained
0 commit comments