Skip to content

Commit 5d4c445

Browse files
committed
[stdlib] some span properties are more available
1 parent f97961a commit 5d4c445

File tree

6 files changed

+55
-27
lines changed

6 files changed

+55
-27
lines changed

stdlib/public/core/ArraySlice.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,18 +1219,24 @@ extension ArraySlice {
12191219
) throws(E) -> R {
12201220
return try unsafe _buffer.withUnsafeBufferPointer(body)
12211221
}
1222+
}
12221223

1223-
@available(SwiftStdlib 6.2, *)
1224+
@available(SwiftCompatibilitySpan 5.0, *)
1225+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
1226+
extension ArraySlice {
1227+
@available(SwiftCompatibilitySpan 5.0, *)
1228+
@_alwaysEmitIntoClient
12241229
public var span: Span<Element> {
12251230
@lifetime(borrow self)
1226-
@_alwaysEmitIntoClient
12271231
borrowing get {
12281232
let (pointer, count) = unsafe (_buffer.firstElementAddress, _buffer.count)
12291233
let span = unsafe Span(_unsafeStart: pointer, count: count)
12301234
return unsafe _overrideLifetime(span, borrowing: self)
12311235
}
12321236
}
1237+
}
12331238

1239+
extension ArraySlice {
12341240
// Superseded by the typed-throws version of this function, but retained
12351241
// for ABI reasons.
12361242
@_semantics("array.withUnsafeMutableBufferPointer")
@@ -1309,8 +1315,11 @@ extension ArraySlice {
13091315
// Invoke the body.
13101316
return try unsafe body(&inoutBufferPointer)
13111317
}
1318+
}
13121319

1313-
@available(SwiftStdlib 6.2, *)
1320+
@available(SwiftCompatibilitySpan 5.0, *)
1321+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
1322+
extension ArraySlice {
13141323
@_alwaysEmitIntoClient
13151324
public var mutableSpan: MutableSpan<Element> {
13161325
@lifetime(&self)
@@ -1330,7 +1339,9 @@ extension ArraySlice {
13301339
return unsafe _overrideLifetime(span, mutating: &self)
13311340
}
13321341
}
1342+
}
13331343

1344+
extension ArraySlice {
13341345
@inlinable
13351346
public __consuming func _copyContents(
13361347
initializing buffer: UnsafeMutableBufferPointer<Element>

stdlib/public/core/CollectionOfOne.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,20 +159,20 @@ extension CollectionOfOne: RandomAccessCollection, MutableCollection {
159159
}
160160
}
161161

162+
@available(SwiftCompatibilitySpan 5.0, *)
163+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
162164
extension CollectionOfOne {
163165

164-
@available(SwiftStdlib 6.2, *)
166+
@_alwaysEmitIntoClient
165167
public var span: Span<Element> {
166168
@lifetime(borrow self)
167-
@_alwaysEmitIntoClient
168169
get {
169170
let pointer = unsafe UnsafePointer<Element>(Builtin.addressOfBorrow(self))
170171
let span = unsafe Span(_unsafeStart: pointer, count: 1)
171172
return unsafe _overrideLifetime(span, borrowing: self)
172173
}
173174
}
174175

175-
@available(SwiftStdlib 6.2, *)
176176
@_alwaysEmitIntoClient
177177
public var mutableSpan: MutableSpan<Element> {
178178
@lifetime(&self)

stdlib/public/core/ContiguousArray.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,19 +1161,24 @@ extension ContiguousArray {
11611161
) throws(E) -> R {
11621162
return try unsafe _buffer.withUnsafeBufferPointer(body)
11631163
}
1164+
}
11641165

1165-
@available(SwiftStdlib 6.2, *)
1166+
@available(SwiftCompatibilitySpan 5.0, *)
1167+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
1168+
extension ContiguousArray {
1169+
@_alwaysEmitIntoClient
11661170
public var span: Span<Element> {
11671171
@lifetime(borrow self)
1168-
@_alwaysEmitIntoClient
11691172
borrowing get {
11701173
let pointer = unsafe _buffer.firstElementAddress
11711174
let count = _buffer.immutableCount
11721175
let span = unsafe Span(_unsafeStart: pointer, count: count)
11731176
return unsafe _overrideLifetime(span, borrowing: self)
11741177
}
11751178
}
1179+
}
11761180

1181+
extension ContiguousArray {
11771182
// Superseded by the typed-throws version of this function, but retained
11781183
// for ABI reasons.
11791184
@_semantics("array.withUnsafeMutableBufferPointer")
@@ -1251,8 +1256,11 @@ extension ContiguousArray {
12511256
// Invoke the body.
12521257
return try unsafe body(&inoutBufferPointer)
12531258
}
1259+
}
12541260

1255-
@available(SwiftStdlib 6.2, *)
1261+
@available(SwiftCompatibilitySpan 5.0, *)
1262+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
1263+
extension ContiguousArray {
12561264
@_alwaysEmitIntoClient
12571265
public var mutableSpan: MutableSpan<Element> {
12581266
@lifetime(&self)
@@ -1272,7 +1280,9 @@ extension ContiguousArray {
12721280
return unsafe _overrideLifetime(span, mutating: &self)
12731281
}
12741282
}
1283+
}
12751284

1285+
extension ContiguousArray {
12761286
@inlinable
12771287
public __consuming func _copyContents(
12781288
initializing buffer: UnsafeMutableBufferPointer<Element>

stdlib/public/core/KeyValuePairs.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,13 @@ extension KeyValuePairs: RandomAccessCollection {
125125
}
126126
}
127127

128+
@available(SwiftCompatibilitySpan 5.0, *)
129+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
128130
extension KeyValuePairs {
129-
130-
@available(SwiftStdlib 6.2, *)
131+
@available(SwiftCompatibilitySpan 5.0, *)
132+
@_alwaysEmitIntoClient
131133
public var span: Span<Element> {
132134
@lifetime(borrow self)
133-
@_alwaysEmitIntoClient
134135
get {
135136
let rp = unsafe UnsafeRawPointer(_elements._buffer.firstElementAddress)
136137
let span = unsafe Span(

stdlib/public/core/UnsafeBufferPointer.swift.gyb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,9 +572,12 @@ extension Unsafe${Mutable}BufferPointer where Element: ~Copyable {
572572
public func extracting(_ bounds: UnboundedRange) -> Self {
573573
unsafe self
574574
}
575+
}
575576

577+
@available(SwiftCompatibilitySpan 5.0, *)
578+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
579+
extension Unsafe${Mutable}BufferPointer where Element: ~Copyable {
576580
@unsafe
577-
@available(SwiftStdlib 6.2, *)
578581
@_alwaysEmitIntoClient
579582
public var span: Span<Element> {
580583
@lifetime(borrow self)
@@ -586,7 +589,6 @@ extension Unsafe${Mutable}BufferPointer where Element: ~Copyable {
586589
%if Mutable:
587590

588591
@unsafe
589-
@available(SwiftStdlib 6.2, *)
590592
@_alwaysEmitIntoClient
591593
public var mutableSpan: MutableSpan<Element> {
592594
@lifetime(borrow self)

stdlib/public/core/UnsafeRawBufferPointer.swift.gyb

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,17 +1162,6 @@ extension Unsafe${Mutable}RawBufferPointer {
11621162
}
11631163
}
11641164

1165-
@unsafe
1166-
@available(SwiftStdlib 6.2, *)
1167-
@_alwaysEmitIntoClient
1168-
public var mutableBytes: MutableRawSpan {
1169-
@lifetime(borrow self)
1170-
@_transparent
1171-
get {
1172-
unsafe MutableRawSpan(_unsafeBytes: self)
1173-
}
1174-
}
1175-
11761165
% end
11771166
@_alwaysEmitIntoClient
11781167
public func withContiguousStorageIfAvailable<R>(
@@ -1182,9 +1171,12 @@ extension Unsafe${Mutable}RawBufferPointer {
11821171
try unsafe body(${ 'UnsafeBufferPointer<Element>($0)' if Mutable else '$0' })
11831172
}
11841173
}
1185-
1174+
}
1175+
1176+
@available(SwiftCompatibilitySpan 5.0, *)
1177+
@_originallyDefinedIn(module: "Swift;CompatibilitySpan", SwiftCompatibilitySpan 6.2)
1178+
extension Unsafe${Mutable}RawBufferPointer {
11861179
@unsafe
1187-
@available(SwiftStdlib 6.2, *)
11881180
@_alwaysEmitIntoClient
11891181
public var bytes: RawSpan {
11901182
@lifetime(borrow self)
@@ -1193,6 +1185,18 @@ extension Unsafe${Mutable}RawBufferPointer {
11931185
unsafe RawSpan(_unsafeBytes: self)
11941186
}
11951187
}
1188+
% if Mutable:
1189+
1190+
@unsafe
1191+
@_alwaysEmitIntoClient
1192+
public var mutableBytes: MutableRawSpan {
1193+
@lifetime(borrow self)
1194+
@_transparent
1195+
get {
1196+
unsafe MutableRawSpan(_unsafeBytes: self)
1197+
}
1198+
}
1199+
% end
11961200
}
11971201

11981202
@_unavailableInEmbedded

0 commit comments

Comments
 (0)