File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 43
43
@available ( SwiftStdlib 6 . 2 , * )
44
44
@frozen
45
45
@safe
46
+ @_addressableForDependencies
46
47
public struct InlineArray < let count: Int , Element: ~ Copyable> : ~ Copyable {
47
48
@usableFromInline
48
49
internal let _storage : Builtin . FixedArray < count , Element >
@@ -441,6 +442,26 @@ extension InlineArray where Element: ~Copyable {
441
442
}
442
443
}
443
444
445
+ //===----------------------------------------------------------------------===//
446
+ // MARK: Span
447
+ //===----------------------------------------------------------------------===//
448
+
449
+ @available ( SwiftStdlib 6 . 2 , * )
450
+ extension InlineArray where Element: ~ Copyable {
451
+
452
+ @available ( SwiftStdlib 6 . 2 , * )
453
+ public var span: Span< Element > {
454
+ @lifetime ( borrow self)
455
+ @_addressableSelf
456
+ @_alwaysEmitIntoClient
457
+ borrowing get {
458
+ let pointer = _address
459
+ let span = unsafe Span( _unsafeStart: pointer, count: count)
460
+ return unsafe _override Lifetime( span, borrowing : self)
461
+ }
462
+ }
463
+ }
464
+
444
465
//===----------------------------------------------------------------------===//
445
466
// MARK: - Unsafe APIs
446
467
//===----------------------------------------------------------------------===//
Original file line number Diff line number Diff line change 10
10
//
11
11
//===----------------------------------------------------------------------===//
12
12
13
- // RUN: %target-run-stdlib-swift
13
+ // RUN: %target-run-stdlib-swift(-enable-experimental-feature ValueGenerics)
14
14
15
15
// REQUIRES: executable_test
16
+ // REQUIRES: swift_feature_ValueGenerics
16
17
17
18
import StdlibUnittest
18
19
@@ -68,3 +69,20 @@ suite.test("CollectionOfOne.span stride test")
68
69
let bytes = span. bytes
69
70
expectEqual ( bytes. byteCount, MemoryLayout . size ( ofValue: c) )
70
71
}
72
+
73
+ suite. test ( " InlineArray.span property " )
74
+ . skip ( . custom(
75
+ { if #available( SwiftStdlib 6 . 2 , * ) { false } else { true } } ,
76
+ reason: " Requires Swift 6.2's standard library "
77
+ ) )
78
+ . code {
79
+ guard #available( SwiftStdlib 6 . 2 , * ) else { return }
80
+
81
+ var s = InlineArray< 5 , Int> ( repeating : 0 )
82
+ s [ 3 ] = . random( in: 0 ..< 1000 )
83
+ let span = s. span
84
+ expectEqual ( span. count, s. count)
85
+ for i in s. indices {
86
+ expectEqual ( span [ i] , s [ i] )
87
+ }
88
+ }
You can’t perform that action at this time.
0 commit comments