Skip to content

Commit 0a5177d

Browse files
authored
Merge pull request #20605 from milseman/abi_publishing
Finish String and Unicode ABI audit
2 parents 8fb8112 + 6576f6a commit 0a5177d

19 files changed

+302
-220
lines changed

stdlib/public/core/ASCII.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ extension Unicode.ASCII : Unicode.Encoding {
1818
public typealias CodeUnit = UInt8
1919
public typealias EncodedScalar = CollectionOfOne<CodeUnit>
2020

21-
@inlinable // FIXME(sil-serialize-all)
21+
@inlinable
2222
public static var encodedReplacementCharacter : EncodedScalar {
2323
return EncodedScalar(0x1a) // U+001A SUBSTITUTE; best we can do for ASCII
2424
}
@@ -46,7 +46,7 @@ extension Unicode.ASCII : Unicode.Encoding {
4646
}
4747

4848
@inline(__always)
49-
@inlinable // FIXME(sil-serialize-all)
49+
@inlinable
5050
public static func transcode<FromEncoding : Unicode.Encoding>(
5151
_ content: FromEncoding.EncodedScalar, from _: FromEncoding.Type
5252
) -> EncodedScalar? {
@@ -64,9 +64,9 @@ extension Unicode.ASCII : Unicode.Encoding {
6464
return encode(FromEncoding.decode(content))
6565
}
6666

67-
@_fixed_layout // FIXME(sil-serialize-all)
67+
@_fixed_layout
6868
public struct Parser {
69-
@inlinable // FIXME(sil-serialize-all)
69+
@inlinable
7070
public init() { }
7171
}
7272

@@ -78,7 +78,7 @@ extension Unicode.ASCII.Parser : Unicode.Parser {
7878
public typealias Encoding = Unicode.ASCII
7979

8080
/// Parses a single Unicode scalar value from `input`.
81-
@inlinable // FIXME(sil-serialize-all)
81+
@inlinable
8282
public mutating func parseScalar<I : IteratorProtocol>(
8383
from input: inout I
8484
) -> Unicode.ParseResult<Encoding.EncodedScalar>

stdlib/public/core/ICU.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,12 @@
1212
import SwiftShims
1313

1414
extension __swift_stdlib_UErrorCode {
15-
@inlinable // FIXME(sil-serialize-all)
1615
internal var isFailure: Bool {
1716
return rawValue > __swift_stdlib_U_ZERO_ERROR.rawValue
1817
}
19-
@inlinable // FIXME(sil-serialize-all)
2018
internal var isWarning: Bool {
2119
return rawValue < __swift_stdlib_U_ZERO_ERROR.rawValue
2220
}
23-
@inlinable // FIXME(sil-serialize-all)
2421
internal var isSuccess: Bool {
2522
return rawValue <= __swift_stdlib_U_ZERO_ERROR.rawValue
2623
}

stdlib/public/core/IntegerParsing.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
/// Returns c as a UTF16.CodeUnit. Meant to be used as _ascii16("x").
14+
@inlinable
15+
internal func _ascii16(_ c: Unicode.Scalar) -> UTF16.CodeUnit {
16+
_sanityCheck(c.value >= 0 && c.value <= 0x7F, "not ASCII")
17+
return UTF16.CodeUnit(c.value)
18+
}
19+
1320
@inlinable
1421
@inline(__always)
1522
internal func _asciiDigit<CodeUnit : UnsignedInteger, Result : BinaryInteger>(

stdlib/public/core/StringIndex.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ the default value being `0`.
3535
*/
3636
extension String {
3737
/// A position of a character or code unit in a string.
38-
@_fixed_layout // FIXME(sil-serialize-all)
38+
@_fixed_layout
3939
public struct Index {
4040
@usableFromInline
4141
internal var _rawBits: UInt64

stdlib/public/core/StringIndexConversions.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ extension String.Index {
7979
/// If this index does not have an exact corresponding position in `utf8`,
8080
/// this method returns `nil`. For example, an attempt to convert the
8181
/// position of a UTF-16 trailing surrogate returns `nil`.
82-
@inlinable // FIXME(sil-serialize-all)
8382
public func samePosition(
8483
in utf8: String.UTF8View
8584
) -> String.UTF8View.Index? {
@@ -108,7 +107,6 @@ extension String.Index {
108107
/// index. If this index does not have an exact corresponding position in
109108
/// `utf16`, this method returns `nil`. For example, an attempt to convert
110109
/// the position of a UTF-8 continuation byte returns `nil`.
111-
@inlinable // FIXME(sil-serialize-all)
112110
public func samePosition(
113111
in utf16: String.UTF16View
114112
) -> String.UTF16View.Index? {

stdlib/public/core/StringUTF16View.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,12 @@ extension String {
9898
/// print(snowy[range])
9999
/// }
100100
/// // Prints "Let it snow!"
101-
@_fixed_layout // FIXME(sil-serialize-all)
101+
@_fixed_layout
102102
public struct UTF16View {
103103
@usableFromInline
104104
internal var _guts: _StringGuts
105105

106-
@inlinable // FIXME(sil-serialize-all)
106+
@inlinable
107107
internal init(_ guts: _StringGuts) {
108108
self._guts = guts
109109
_invariantCheck()
@@ -127,7 +127,7 @@ extension String.UTF16View: BidirectionalCollection {
127127

128128
/// The position of the first code unit if the `String` is
129129
/// nonempty; identical to `endIndex` otherwise.
130-
@inlinable // FIXME(sil-serialize-all)
130+
@inlinable
131131
public var startIndex: Index {
132132
@inline(__always) get { return _guts.startIndex }
133133
}
@@ -136,7 +136,7 @@ extension String.UTF16View: BidirectionalCollection {
136136
/// the last valid subscript argument.
137137
///
138138
/// In an empty UTF-16 view, `endIndex` is equal to `startIndex`.
139-
@inlinable // FIXME(sil-serialize-all)
139+
@inlinable
140140
public var endIndex: Index {
141141
@inline(__always) get { return _guts.endIndex }
142142
}
@@ -280,7 +280,7 @@ extension String.UTF16View: CustomDebugStringConvertible {
280280

281281
extension String {
282282
/// A UTF-16 encoding of `self`.
283-
@inlinable // FIXME(sil-serialize-all)
283+
@inlinable
284284
public var utf16: UTF16View {
285285
@inline(__always) get { return UTF16View(_guts) }
286286
@inline(__always) set { self = String(newValue._guts) }
@@ -356,7 +356,6 @@ extension String.UTF16View.Index {
356356
/// position in `unicodeScalars`, this method returns `nil`. For example,
357357
/// an attempt to convert the position of a UTF-16 trailing surrogate
358358
/// returns `nil`.
359-
@inlinable // FIXME(sil-serialize-all)
360359
public func samePosition(
361360
in unicodeScalars: String.UnicodeScalarView
362361
) -> String.UnicodeScalarIndex? {

stdlib/public/core/Substring.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,9 +329,9 @@ extension Substring : LosslessStringConvertible {
329329
}
330330

331331
extension Substring {
332-
@_fixed_layout // FIXME(sil-serialize-all)
332+
@_fixed_layout
333333
public struct UTF8View {
334-
@usableFromInline // FIXME(sil-serialize-all)
334+
@usableFromInline
335335
internal var _slice: Slice<String.UTF8View>
336336
}
337337
}
@@ -390,12 +390,12 @@ extension Substring.UTF8View : BidirectionalCollection {
390390
return _slice.distance(from: start, to: end)
391391
}
392392

393-
@inlinable // FIXME(sil-serialize-all)
393+
@inlinable
394394
public func _failEarlyRangeCheck(_ index: Index, bounds: Range<Index>) {
395395
_slice._failEarlyRangeCheck(index, bounds: bounds)
396396
}
397397

398-
@inlinable // FIXME(sil-serialize-all)
398+
@inlinable
399399
public func _failEarlyRangeCheck(
400400
_ range: Range<Index>, bounds: Range<Index>
401401
) {

stdlib/public/core/UIntBuffer.swift

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,19 @@
1515
//
1616
//===----------------------------------------------------------------------===//
1717
@_fixed_layout
18-
public struct _UIntBuffer<
19-
Storage: UnsignedInteger & FixedWidthInteger,
20-
Element: UnsignedInteger & FixedWidthInteger
21-
> {
18+
public struct _UIntBuffer<Element: UnsignedInteger & FixedWidthInteger> {
19+
public typealias Storage = UInt32
2220
public var _storage: Storage
2321
public var _bitCount: UInt8
2422

25-
@inlinable // FIXME(sil-serialize-all)
23+
@inlinable
2624
@inline(__always)
2725
public init(_storage: Storage, _bitCount: UInt8) {
2826
self._storage = _storage
2927
self._bitCount = _bitCount
3028
}
3129

32-
@inlinable // FIXME(sil-serialize-all)
30+
@inlinable
3331
@inline(__always)
3432
public init(containing e: Element) {
3533
_storage = Storage(truncatingIfNeeded: e)
@@ -42,11 +40,11 @@ extension _UIntBuffer : Sequence {
4240

4341
@_fixed_layout
4442
public struct Iterator : IteratorProtocol, Sequence {
45-
@inlinable // FIXME(sil-serialize-all)
43+
@inlinable
4644
@inline(__always)
4745
public init(_ x: _UIntBuffer) { _impl = x }
4846

49-
@inlinable // FIXME(sil-serialize-all)
47+
@inlinable
5048
@inline(__always)
5149
public mutating func next() -> Element? {
5250
if _impl._bitCount == 0 { return nil }
@@ -60,56 +58,56 @@ extension _UIntBuffer : Sequence {
6058
var _impl: _UIntBuffer
6159
}
6260

63-
@inlinable // FIXME(sil-serialize-all)
61+
@inlinable
6462
@inline(__always)
6563
public func makeIterator() -> Iterator {
6664
return Iterator(self)
6765
}
6866
}
6967

7068
extension _UIntBuffer : Collection {
71-
@_fixed_layout // FIXME(sil-serialize-all)
69+
@_fixed_layout
7270
public struct Index : Comparable {
7371
@usableFromInline
7472
internal var bitOffset: UInt8
7573

76-
@inlinable // FIXME(sil-serialize-all)
74+
@inlinable
7775
internal init(bitOffset: UInt8) { self.bitOffset = bitOffset }
7876

79-
@inlinable // FIXME(sil-serialize-all)
77+
@inlinable
8078
public static func == (lhs: Index, rhs: Index) -> Bool {
8179
return lhs.bitOffset == rhs.bitOffset
8280
}
83-
@inlinable // FIXME(sil-serialize-all)
81+
@inlinable
8482
public static func < (lhs: Index, rhs: Index) -> Bool {
8583
return lhs.bitOffset < rhs.bitOffset
8684
}
8785
}
8886

89-
@inlinable // FIXME(sil-serialize-all)
87+
@inlinable
9088
public var startIndex : Index {
9189
@inline(__always)
9290
get { return Index(bitOffset: 0) }
9391
}
9492

95-
@inlinable // FIXME(sil-serialize-all)
93+
@inlinable
9694
public var endIndex : Index {
9795
@inline(__always)
9896
get { return Index(bitOffset: _bitCount) }
9997
}
10098

101-
@inlinable // FIXME(sil-serialize-all)
99+
@inlinable
102100
@inline(__always)
103101
public func index(after i: Index) -> Index {
104102
return Index(bitOffset: i.bitOffset &+ _elementWidth)
105103
}
106104

107-
@inlinable // FIXME(sil-serialize-all)
105+
@inlinable
108106
internal var _elementWidth : UInt8 {
109107
return UInt8(truncatingIfNeeded: Element.bitWidth)
110108
}
111109

112-
@inlinable // FIXME(sil-serialize-all)
110+
@inlinable
113111
public subscript(i: Index) -> Element {
114112
@inline(__always)
115113
get {
@@ -119,7 +117,7 @@ extension _UIntBuffer : Collection {
119117
}
120118

121119
extension _UIntBuffer : BidirectionalCollection {
122-
@inlinable // FIXME(sil-serialize-all)
120+
@inlinable
123121
@inline(__always)
124122
public func index(before i: Index) -> Index {
125123
return Index(bitOffset: i.bitOffset &- _elementWidth)
@@ -129,14 +127,14 @@ extension _UIntBuffer : BidirectionalCollection {
129127
extension _UIntBuffer : RandomAccessCollection {
130128
public typealias Indices = DefaultIndices<_UIntBuffer>
131129

132-
@inlinable // FIXME(sil-serialize-all)
130+
@inlinable
133131
@inline(__always)
134132
public func index(_ i: Index, offsetBy n: Int) -> Index {
135133
let x = Int(i.bitOffset) &+ n &* Element.bitWidth
136134
return Index(bitOffset: UInt8(truncatingIfNeeded: x))
137135
}
138136

139-
@inlinable // FIXME(sil-serialize-all)
137+
@inlinable
140138
@inline(__always)
141139
public func distance(from i: Index, to j: Index) -> Int {
142140
return (Int(j.bitOffset) &- Int(i.bitOffset)) / Element.bitWidth
@@ -145,44 +143,44 @@ extension _UIntBuffer : RandomAccessCollection {
145143

146144
extension FixedWidthInteger {
147145
@inline(__always)
148-
@inlinable // FIXME(sil-serialize-all)
146+
@inlinable
149147
internal func _fullShiftLeft<N: FixedWidthInteger>(_ n: N) -> Self {
150148
return (self &<< ((n &+ 1) &>> 1)) &<< (n &>> 1)
151149
}
152150
@inline(__always)
153-
@inlinable // FIXME(sil-serialize-all)
151+
@inlinable
154152
internal func _fullShiftRight<N: FixedWidthInteger>(_ n: N) -> Self {
155153
return (self &>> ((n &+ 1) &>> 1)) &>> (n &>> 1)
156154
}
157155
@inline(__always)
158-
@inlinable // FIXME(sil-serialize-all)
156+
@inlinable
159157
internal static func _lowBits<N: FixedWidthInteger>(_ n: N) -> Self {
160158
return ~((~0 as Self)._fullShiftLeft(n))
161159
}
162160
}
163161

164162
extension Range {
165163
@inline(__always)
166-
@inlinable // FIXME(sil-serialize-all)
164+
@inlinable
167165
internal func _contains_(_ other: Range) -> Bool {
168166
return other.clamped(to: self) == other
169167
}
170168
}
171169

172170
extension _UIntBuffer : RangeReplaceableCollection {
173-
@inlinable // FIXME(sil-serialize-all)
171+
@inlinable
174172
@inline(__always)
175173
public init() {
176174
_storage = 0
177175
_bitCount = 0
178176
}
179177

180-
@inlinable // FIXME(sil-serialize-all)
178+
@inlinable
181179
public var capacity: Int {
182180
return Storage.bitWidth / Element.bitWidth
183181
}
184182

185-
@inlinable // FIXME(sil-serialize-all)
183+
@inlinable
186184
@inline(__always)
187185
public mutating func append(_ newElement: Element) {
188186
_debugPrecondition(count + 1 <= capacity)
@@ -191,7 +189,7 @@ extension _UIntBuffer : RangeReplaceableCollection {
191189
_bitCount = _bitCount &+ _elementWidth
192190
}
193191

194-
@inlinable // FIXME(sil-serialize-all)
192+
@inlinable
195193
@inline(__always)
196194
@discardableResult
197195
public mutating func removeFirst() -> Element {
@@ -202,7 +200,7 @@ extension _UIntBuffer : RangeReplaceableCollection {
202200
return result
203201
}
204202

205-
@inlinable // FIXME(sil-serialize-all)
203+
@inlinable
206204
@inline(__always)
207205
public mutating func replaceSubrange<C: Collection>(
208206
_ target: Range<Index>, with replacement: C

0 commit comments

Comments
 (0)