Skip to content

Commit 9473182

Browse files
committed
[swiftSyntax] Pass userInfo as UnsafePointer
1 parent 93f77e1 commit 9473182

File tree

6 files changed

+27
-18
lines changed

6 files changed

+27
-18
lines changed

tools/SwiftSyntax/ByteTreeDeserialization.swift

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protocol ByteTreeScalarDecodable {
3232
/// - size: The length of the serialized data in bytes
3333
/// - Returns: The deserialized value
3434
static func read(from pointer: UnsafeRawPointer, size: Int,
35-
userInfo: [ByteTreeUserInfoKey: Any]) -> Self
35+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>) -> Self
3636
}
3737

3838
/// A type that can be deserialized from ByteTree into an object with child
@@ -49,7 +49,8 @@ protocol ByteTreeObjectDecodable {
4949
/// object
5050
/// - Returns: The deserialized object
5151
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
52-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]) -> Self
52+
numFields: Int,
53+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>) -> Self
5354
}
5455

5556
// MARK: - Reader objects
@@ -271,7 +272,8 @@ struct ByteTreeReader {
271272
defer {
272273
objectReader.finalize()
273274
}
274-
return T.read(from: &objectReader, numFields: numFields, userInfo: userInfo)
275+
return T.read(from: &objectReader, numFields: numFields,
276+
userInfo: &userInfo)
275277
}
276278

277279
/// Read the next field in the tree as a scalar of the specified type.
@@ -285,7 +287,7 @@ struct ByteTreeReader {
285287
defer {
286288
pointer = pointer.advanced(by: fieldSize)
287289
}
288-
return T.read(from: pointer, size: fieldSize, userInfo: userInfo)
290+
return T.read(from: pointer, size: fieldSize, userInfo: &userInfo)
289291
}
290292

291293
/// Discard the next scalar field, advancing the pointer to the next field
@@ -309,7 +311,7 @@ struct ByteTreeReader {
309311
// multiple types
310312
extension ByteTreeScalarDecodable where Self : FixedWidthInteger {
311313
static func read(from pointer: UnsafeRawPointer, size: Int,
312-
userInfo: [ByteTreeUserInfoKey: Any]
314+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
313315
) -> Self {
314316
assert(size == MemoryLayout<Self>.size)
315317
return pointer.bindMemory(to: Self.self, capacity: 1).pointee
@@ -322,7 +324,8 @@ extension UInt32: ByteTreeScalarDecodable {}
322324

323325
extension String: ByteTreeScalarDecodable {
324326
static func read(from pointer: UnsafeRawPointer, size: Int,
325-
userInfo: [ByteTreeUserInfoKey: Any]) -> String {
327+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
328+
) -> String {
326329
let data = Data(bytes: pointer, count: size)
327330
return String(data: data, encoding: .utf8)!
328331
}
@@ -332,7 +335,8 @@ extension Optional: ByteTreeObjectDecodable
332335
where
333336
Wrapped: ByteTreeObjectDecodable {
334337
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
335-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
338+
numFields: Int,
339+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
336340
) -> Optional<Wrapped> {
337341
if numFields == 0 {
338342
return nil
@@ -347,7 +351,8 @@ extension Array: ByteTreeObjectDecodable
347351
where
348352
Element: ByteTreeObjectDecodable {
349353
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
350-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
354+
numFields: Int,
355+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
351356
) -> Array<Element> {
352357
return (0..<numFields).map {
353358
return reader.pointee.readField(Element.self, index: $0)

tools/SwiftSyntax/RawSyntax.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,7 @@ extension RawSyntax: ByteTreeObjectDecodable {
396396
case omitted = 2
397397

398398
static func read(from pointer: UnsafeRawPointer, size: Int,
399-
userInfo: [ByteTreeUserInfoKey: Any]
399+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
400400
) -> SyntaxType {
401401
let rawValue = UInt8.read(from: pointer, size: size, userInfo: userInfo)
402402
guard let type = SyntaxType(rawValue: rawValue) else {
@@ -407,7 +407,8 @@ extension RawSyntax: ByteTreeObjectDecodable {
407407
}
408408

409409
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
410-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
410+
numFields: Int,
411+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
411412
) -> RawSyntax {
412413
let syntaxNode: RawSyntax
413414
let type = reader.pointee.readField(SyntaxType.self, index: 0)
@@ -428,7 +429,7 @@ extension RawSyntax: ByteTreeObjectDecodable {
428429
syntaxNode = RawSyntax(kind: kind, layout: layout, presence: presence,
429430
id: id)
430431
case .omitted:
431-
guard let lookupFunc = userInfo[.omittedNodeLookupFunction] as?
432+
guard let lookupFunc = userInfo.pointee[.omittedNodeLookupFunction] as?
432433
(SyntaxNodeId) -> RawSyntax? else {
433434
fatalError("omittedNodeLookupFunction is required when decoding an " +
434435
"incrementally transferred syntax tree")
@@ -438,7 +439,7 @@ extension RawSyntax: ByteTreeObjectDecodable {
438439
}
439440
syntaxNode = lookupNode
440441
}
441-
if let callback = userInfo[.rawSyntaxDecodedCallback] as?
442+
if let callback = userInfo.pointee[.rawSyntaxDecodedCallback] as?
442443
(RawSyntax) -> Void {
443444
callback(syntaxNode)
444445
}
@@ -448,7 +449,7 @@ extension RawSyntax: ByteTreeObjectDecodable {
448449

449450
extension SyntaxNodeId: ByteTreeScalarDecodable {
450451
static func read(from pointer: UnsafeRawPointer, size: Int,
451-
userInfo: [ByteTreeUserInfoKey: Any]
452+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
452453
) -> SyntaxNodeId {
453454
let rawValue = UInt32.read(from: pointer, size: size, userInfo: userInfo)
454455
return SyntaxNodeId(rawValue: UInt(rawValue))

tools/SwiftSyntax/SourcePresence.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public enum SourcePresence: String, Codable {
2626

2727
extension SourcePresence: ByteTreeScalarDecodable {
2828
static func read(from pointer: UnsafeRawPointer, size: Int,
29-
userInfo: [ByteTreeUserInfoKey: Any]
29+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
3030
) -> SourcePresence {
3131
let rawValue = pointer.bindMemory(to: UInt8.self, capacity: 1).pointee
3232
switch rawValue {

tools/SwiftSyntax/SyntaxKind.swift.gyb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ internal func makeSyntax(root: SyntaxData?, data: SyntaxData) -> Syntax {
8686

8787
extension SyntaxKind: ByteTreeScalarDecodable {
8888
static func read(from pointer: UnsafeRawPointer, size: Int,
89-
userInfo: [ByteTreeUserInfoKey: Any]
89+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
9090
) -> SyntaxKind {
9191
// Explicitly spell out all SyntaxKinds to keep the serialized value stable
9292
// even if its members get reordered or members get removed

tools/SwiftSyntax/TokenKind.swift.gyb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ extension TokenKind: Equatable {
112112

113113
extension TokenKind: ByteTreeObjectDecodable {
114114
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
115-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
115+
numFields: Int,
116+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
116117
) -> TokenKind {
117118
// Explicitly spell out all TokenKinds to keep the serialized value stable
118119
// even if its members get reordered or members get removed

tools/SwiftSyntax/Trivia.swift.gyb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,8 @@ extension TriviaPiece {
222222

223223
extension Trivia: ByteTreeObjectDecodable {
224224
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
225-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
225+
numFields: Int,
226+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
226227
) -> Trivia {
227228
let pieces = [TriviaPiece].read(from: reader, numFields: numFields,
228229
userInfo: userInfo)
@@ -232,7 +233,8 @@ extension Trivia: ByteTreeObjectDecodable {
232233

233234
extension TriviaPiece: ByteTreeObjectDecodable {
234235
static func read(from reader: UnsafeMutablePointer<ByteTreeObjectReader>,
235-
numFields: Int, userInfo: [ByteTreeUserInfoKey: Any]
236+
numFields: Int,
237+
userInfo: UnsafePointer<[ByteTreeUserInfoKey: Any]>
236238
) -> TriviaPiece {
237239
let kind = reader.pointee.readField(UInt8.self, index: 0)
238240
switch kind {

0 commit comments

Comments
 (0)