Skip to content

Commit 776ec74

Browse files
committed
[stdlib] {consuming,borrowing}{Flat,}Map: adopt typed throws
1 parent 71519aa commit 776ec74

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

stdlib/public/core/Optional.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ extension Optional {
187187
/// returns `nil`.
188188
@inlinable
189189
public func map<U>(
190+
// FIXME: This needs to support typed throws.
190191
_ transform: (Wrapped) throws -> U
191192
) rethrows -> U? {
192193
switch self {
@@ -200,22 +201,22 @@ extension Optional {
200201

201202
extension Optional where Wrapped: ~Copyable {
202203
@_alwaysEmitIntoClient
203-
public consuming func consumingMap<U: ~Copyable>(
204-
_ transform: (consuming Wrapped) throws -> U
205-
) rethrows -> U? {
206-
switch /*consume*/ self {
204+
public consuming func consumingMap<U: ~Copyable, E: Error>(
205+
_ transform: (consuming Wrapped) throws(E) -> U
206+
) throws(E) -> U? {
207+
switch consume self {
207208
case .some(let y):
208-
return .some(try transform(consume y))
209+
return .some(try transform(y))
209210
case .none:
210211
return .none
211212
}
212213
}
213214

214215
#if $BorrowingSwitch
215216
@_alwaysEmitIntoClient
216-
public borrowing func borrowingMap<U: ~Copyable>(
217-
_ transform: (borrowing Wrapped) throws -> U
218-
) rethrows -> U? {
217+
public borrowing func borrowingMap<U: ~Copyable, E: Error>(
218+
_ transform: (borrowing Wrapped) throws(E) -> U
219+
) throws(E) -> U? {
219220
switch self {
220221
case .some(_borrowing y):
221222
return .some(try transform(y))
@@ -248,6 +249,7 @@ extension Optional {
248249
/// returns `nil`.
249250
@inlinable
250251
public func flatMap<U>(
252+
// FIXME: This needs to support typed throws.
251253
_ transform: (Wrapped) throws -> U?
252254
) rethrows -> U? {
253255
switch self {
@@ -261,10 +263,9 @@ extension Optional {
261263

262264
extension Optional where Wrapped: ~Copyable {
263265
@_alwaysEmitIntoClient
264-
@inlinable
265-
public consuming func consumingFlatMap<U: ~Copyable>(
266-
_ transform: (consuming Wrapped) throws -> U?
267-
) rethrows -> U? {
266+
public consuming func consumingFlatMap<U: ~Copyable, E: Error>(
267+
_ transform: (consuming Wrapped) throws(E) -> U?
268+
) throws(E) -> U? {
268269
switch consume self {
269270
case .some(let y):
270271
return try transform(consume y)
@@ -275,10 +276,9 @@ extension Optional where Wrapped: ~Copyable {
275276

276277
#if $BorrowingSwitch
277278
@_alwaysEmitIntoClient
278-
@inlinable
279-
public func borrowingFlatMap<U: ~Copyable>(
280-
_ transform: (borrowing Wrapped) throws -> U?
281-
) rethrows -> U? {
279+
public func borrowingFlatMap<U: ~Copyable, E: Error>(
280+
_ transform: (borrowing Wrapped) throws(E) -> U?
281+
) throws(E) -> U? {
282282
switch self {
283283
case .some(_borrowing y):
284284
return try transform(y)

0 commit comments

Comments
 (0)