From b227790692b73cb494d9f47a00fac2f4b824b88a Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Wed, 20 Jan 2021 16:05:01 +0100 Subject: [PATCH 1/2] Remove advancedToEndOfChildren These methods are not used anywhere and are potentially incorrect (indexInParent should probably be raw.numberOfChildren - 1). Remove the until we really need them --- Sources/SwiftSyntax/SyntaxData.swift | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/Sources/SwiftSyntax/SyntaxData.swift b/Sources/SwiftSyntax/SyntaxData.swift index 7bde994d607..3b663e12218 100644 --- a/Sources/SwiftSyntax/SyntaxData.swift +++ b/Sources/SwiftSyntax/SyntaxData.swift @@ -31,12 +31,6 @@ struct AbsoluteSyntaxPosition { return .init(offset: self.offset, indexInParent: 0) } - func advancedToEndOfChildren(_ raw: RawSyntax) -> AbsoluteSyntaxPosition { - let newOffset = self.offset + UInt32(truncatingIfNeeded: raw.totalLength.utf8Length) - let newIndexInParent = UInt32(truncatingIfNeeded: raw.numberOfChildren) - return .init(offset: newOffset, indexInParent: newIndexInParent) - } - static var forRoot: AbsoluteSyntaxPosition { return .init(offset: 0, indexInParent: 0) } @@ -70,12 +64,6 @@ struct AbsoluteSyntaxInfo { return .init(position: newPosition, nodeId: newNodeId) } - func advancedToEndOfChildren(_ raw: RawSyntax) -> AbsoluteSyntaxInfo { - let newPosition = position.advancedToEndOfChildren(raw) - let newNodeId = nodeId.advancedToEndOfChildren(raw) - return .init(position: newPosition, nodeId: newNodeId) - } - static var forRoot: AbsoluteSyntaxInfo { return .init(position: .forRoot, nodeId: .newRoot()) } @@ -104,12 +92,6 @@ struct SyntaxIndexInTree: Hashable { return .init(indexInTree: newIndexInTree) } - func advancedToEndOfChildren(_ raw: RawSyntax) -> SyntaxIndexInTree { - let newIndexInTree = self.indexInTree + - UInt32(truncatingIfNeeded: raw.totalNodes) - return .init(indexInTree: newIndexInTree) - } - init(indexInTree: UInt32) { self.indexInTree = indexInTree } @@ -137,11 +119,6 @@ public struct SyntaxIdentifier: Hashable { return .init(rootId: self.rootId, indexInTree: newIndexInTree) } - func advancedToEndOfChildren(_ raw: RawSyntax) -> SyntaxIdentifier { - let newIndexInTree = self.indexInTree.advancedToEndOfChildren(raw) - return .init(rootId: self.rootId, indexInTree: newIndexInTree) - } - static func newRoot() -> SyntaxIdentifier { return .init(rootId: UInt32(truncatingIfNeeded: AtomicCounter.next()), indexInTree: .zero) From 1e998e808e3ff7c28c6f7d33c4480dbac0a7040a Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Wed, 20 Jan 2021 16:05:56 +0100 Subject: [PATCH 2/2] Rename advancedBy/reversedBySibling to advancedBy/reversedBy We are not actually advancing by a sibling but just by a node, simplify the method name to reflect this. --- Sources/SwiftSyntax/SyntaxChildren.swift | 4 ++-- Sources/SwiftSyntax/SyntaxData.swift | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Sources/SwiftSyntax/SyntaxChildren.swift b/Sources/SwiftSyntax/SyntaxChildren.swift index 09ccb713dc7..ddd7a500be4 100644 --- a/Sources/SwiftSyntax/SyntaxChildren.swift +++ b/Sources/SwiftSyntax/SyntaxChildren.swift @@ -156,7 +156,7 @@ struct RawSyntaxChildren: BidirectionalCollection { if index.indexInParent + 1 < numberOfChildren { // Compute the next materialized index let nodeLength = UInt32(node?.totalLength.utf8Length ?? 0) - let advancedIndexInTree = index.indexInTree.advancedBySibling(node) + let advancedIndexInTree = index.indexInTree.advancedBy(node) return SyntaxChildrenIndex(offset: index.offset + nodeLength, indexInParent: index.indexInParent + 1, indexInTree: advancedIndexInTree) @@ -176,7 +176,7 @@ struct RawSyntaxChildren: BidirectionalCollection { // We are reversing a non-end index. let previousNode = parent.child(at: Int(index.indexInParent - 1)) let previousNodeLength = UInt32(previousNode?.totalLength.utf8Length ?? 0) - let reversedIndexInTree = index.indexInTree.reversedBySibling(previousNode) + let reversedIndexInTree = index.indexInTree.reversedBy(previousNode) return SyntaxChildrenIndex(offset: index.offset - previousNodeLength, indexInParent: index.indexInParent - 1, indexInTree: reversedIndexInTree) diff --git a/Sources/SwiftSyntax/SyntaxData.swift b/Sources/SwiftSyntax/SyntaxData.swift index 3b663e12218..98c25286add 100644 --- a/Sources/SwiftSyntax/SyntaxData.swift +++ b/Sources/SwiftSyntax/SyntaxData.swift @@ -75,13 +75,17 @@ struct SyntaxIndexInTree: Hashable { static var zero: SyntaxIndexInTree = SyntaxIndexInTree(indexInTree: 0) - func advancedBySibling(_ raw: RawSyntax?) -> SyntaxIndexInTree { + /// Assuming that this index points to the start of `Raw`, so that it points + /// to the next sibling of `Raw`. + func advancedBy(_ raw: RawSyntax?) -> SyntaxIndexInTree { let newIndexInTree = self.indexInTree + UInt32(truncatingIfNeeded: raw?.totalNodes ?? 0) return .init(indexInTree: newIndexInTree) } - func reversedBySibling(_ raw: RawSyntax?) -> SyntaxIndexInTree { + /// Assuming that this index points to the next sibling of `Raw`, reverse it + /// so that it points to the start of `Raw`. + func reversedBy(_ raw: RawSyntax?) -> SyntaxIndexInTree { let newIndexInTree = self.indexInTree - UInt32(truncatingIfNeeded: raw?.totalNodes ?? 0) return .init(indexInTree: newIndexInTree) @@ -105,12 +109,12 @@ public struct SyntaxIdentifier: Hashable { let indexInTree: SyntaxIndexInTree func advancedBySibling(_ raw: RawSyntax?) -> SyntaxIdentifier { - let newIndexInTree = indexInTree.advancedBySibling(raw) + let newIndexInTree = indexInTree.advancedBy(raw) return .init(rootId: self.rootId, indexInTree: newIndexInTree) } func reversedBySibling(_ raw: RawSyntax?) -> SyntaxIdentifier { - let newIndexInTree = self.indexInTree.reversedBySibling(raw) + let newIndexInTree = self.indexInTree.reversedBy(raw) return .init(rootId: self.rootId, indexInTree: newIndexInTree) }