Skip to content

Commit 351adc7

Browse files
committed
[stdlib] Enable NonescapableTypes
1 parent 696bbac commit 351adc7

File tree

3 files changed

+6
-12
lines changed

3 files changed

+6
-12
lines changed

stdlib/public/core/Misc.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -237,17 +237,12 @@ func _rethrowsViaClosure(_ fn: () throws -> ()) rethrows {
237237
/// protocol NoRequirements: ~Copyable { }
238238
///
239239
/// Extensions to the `Copyable` protocol are not allowed.
240-
@_marker public protocol Copyable {}
240+
@_marker public protocol Copyable/*: ~Escapable*/ {}
241241

242242
@_documentation(visibility: internal)
243-
@_marker public protocol Escapable {}
243+
@_marker public protocol Escapable/*: ~Copyable*/ {}
244244

245-
#if $BitwiseCopyable2
246245
@_marker public protocol BitwiseCopyable: ~Escapable { }
247246

248247
@available(*, deprecated, message: "Use BitwiseCopyable")
249248
public typealias _BitwiseCopyable = BitwiseCopyable
250-
#else
251-
@_marker public protocol _BitwiseCopyable: ~Escapable { }
252-
public typealias BitwiseCopyable = _BitwiseCopyable
253-
#endif

stdlib/public/core/Optional.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@ public enum Optional<Wrapped: ~Copyable & ~Escapable>: ~Copyable, ~Escapable {
133133
}
134134

135135
extension Optional: Copyable where Wrapped: Copyable /*& ~Escapable */ {}
136+
136137
extension Optional: Escapable where Wrapped: Escapable /*& ~Copyable */ {}
137138

138-
extension Optional: BitwiseCopyable where Wrapped: BitwiseCopyable {}
139-
// FIXME: Maybe BitwiseCopyable shouldn't require Escapability
139+
extension Optional: BitwiseCopyable
140+
where Wrapped: BitwiseCopyable & ~Escapable {}
140141

141142
extension Optional: Sendable where Wrapped: ~Copyable & ~Escapable & Sendable {}
142143

test/stdlib/Optional.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -465,9 +465,7 @@ OptionalTests.test("BitwiseCopyability") {
465465
expectFalse(isBitwiseCopyable(Optional<NoncopyableStruct>.self))
466466
expectFalse(isBitwiseCopyable(Optional<RegularClass>.self))
467467
#if $NonescapableTypes
468-
// FIXME: Should this be true?
469-
expectFalse(isBitwiseCopyable(Optional<NonescapableStruct>.self))
470-
468+
expectTrue(isBitwiseCopyable(Optional<NonescapableStruct>.self))
471469
expectFalse(isBitwiseCopyable(Optional<NoncopyableNonescapableStruct>.self))
472470
expectFalse(isBitwiseCopyable(Optional<NonescapableNontrivialStruct>.self))
473471
#endif

0 commit comments

Comments
 (0)