Skip to content

Commit 7b4381b

Browse files
committed
Revert "[temporary] disable small-string support"
This reverts commit ea44ff9.
1 parent a6d311e commit 7b4381b

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

stdlib/public/core/StringUTF8View.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ extension String {
8989
/// print(String(s1.utf8.prefix(15))!)
9090
/// // Prints "They call me 'B"
9191
@frozen
92+
@_addressableForDependencies
9293
public struct UTF8View: Sendable {
9394
@usableFromInline
9495
internal var _guts: _StringGuts
@@ -345,11 +346,10 @@ extension String.UTF8View {
345346
#endif
346347
let count = _guts.count
347348
if _guts.isSmall {
348-
fatalError("Span over the small string form is not supported yet.")
349-
// let a = Builtin.addressOfBorrow(self)
350-
// let address = unsafe UnsafePointer<UTF8.CodeUnit>(a)
351-
// let span = unsafe Span(_unsafeStart: address, count: count)
352-
// return unsafe _overrideLifetime(span, borrowing: self)
349+
let a = Builtin.addressOfBorrow(self)
350+
let address = unsafe UnsafePointer<UTF8.CodeUnit>(a)
351+
let span = unsafe Span(_unsafeStart: address, count: count)
352+
return unsafe _overrideLifetime(span, borrowing: self)
353353
}
354354
_precondition(_guts.isFastUTF8)
355355
let buffer = unsafe _guts._object.fastUTF8

stdlib/public/core/Substring.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,7 @@ extension Substring: LosslessStringConvertible {
630630

631631
extension Substring {
632632
@frozen
633+
@_addressableForDependencies
633634
public struct UTF8View: Sendable {
634635
@usableFromInline
635636
internal var _slice: Slice<String.UTF8View>
@@ -789,12 +790,11 @@ extension Substring.UTF8View {
789790
let first = _slice._startIndex._encodedOffset
790791
let end = _slice._endIndex._encodedOffset
791792
if _wholeGuts.isSmall {
792-
fatalError("Span over the small string form is not supported yet.")
793-
// let a = Builtin.addressOfBorrow(self)
794-
// let offset = first &+ (2 &* MemoryLayout<String.Index>.stride)
795-
// let start = unsafe UnsafePointer<UTF8.CodeUnit>(a).advanced(by: offset)
796-
// let span = unsafe Span(_unsafeStart: start, count: end &- first)
797-
// return unsafe _overrideLifetime(span, borrowing: self)
793+
let a = Builtin.addressOfBorrow(self)
794+
let offset = first &+ (2 &* MemoryLayout<String.Index>.stride)
795+
let start = unsafe UnsafePointer<UTF8.CodeUnit>(a).advanced(by: offset)
796+
let span = unsafe Span(_unsafeStart: start, count: end &- first)
797+
return unsafe _overrideLifetime(span, borrowing: self)
798798
}
799799
_internalInvariant(_wholeGuts.isFastUTF8)
800800
var span = unsafe Span(_unsafeElements: _wholeGuts._object.fastUTF8)

test/stdlib/Span/StringUTF8SpanProperty.swift

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
// RUN: %target-run-stdlib-swift(-enable-experimental-feature LifetimeDependence -enable-experimental-feature AddressableTypes)
13+
// RUN: %target-run-stdlib-swift(-enable-experimental-feature LifetimeDependence -enable-experimental-feature Span -enable-experimental-feature AddressableTypes)
1414

1515
// REQUIRES: executable_test
1616
// REQUIRES: swift_feature_LifetimeDependence
@@ -22,13 +22,11 @@ var suite = TestSuite("StringUTF8StorageProperty")
2222
defer { runAllTests() }
2323

2424
suite.test("Span from Small String")
25-
.skip(.wasiAny(reason: "Trap tests aren't supported on WASI."))
2625
.require(.stdlib_6_2).code {
2726
guard #available(SwiftStdlib 6.2, *) else { return }
2827

2928
let s = "A small string.".utf8
3029
let u = Array(s)
31-
expectCrashLater()
3230
let span = s.span
3331

3432
let count = span.count
@@ -56,13 +54,11 @@ suite.test("Span from Large Native String")
5654
}
5755

5856
suite.test("Span from Small String's Substring")
59-
.skip(.wasiAny(reason: "Trap tests aren't supported on WASI."))
6057
.require(.stdlib_6_2).code {
6158
guard #available(SwiftStdlib 6.2, *) else { return }
6259

6360
let s = "A small string.".dropFirst(8).utf8
6461
let u = Array("string.".utf8)
65-
expectCrashLater()
6662
let span = s.span
6763

6864
let count = span.count

0 commit comments

Comments
 (0)