@@ -114,6 +114,11 @@ public extension SyntaxProtocol {
114
114
return SyntaxChildren ( _syntaxNode)
115
115
}
116
116
117
+ /// The index of this node in a `SyntaxChildren` collection.
118
+ var index : SyntaxChildrenIndex {
119
+ return SyntaxChildrenIndex ( self . data. absoluteRaw. info)
120
+ }
121
+
117
122
/// Whether or not this node is marked as `present`.
118
123
var isPresent : Bool {
119
124
return raw. isPresent
@@ -185,7 +190,8 @@ public extension SyntaxProtocol {
185
190
guard let parent = self . parent else {
186
191
return nil
187
192
}
188
- for absoluteRaw in PresentRawSyntaxPreviousSiblings ( _syntaxNode) {
193
+ let siblings = PresentRawSyntaxChildren ( parent)
194
+ for absoluteRaw in siblings [ ..< self . index] . reversed ( ) {
189
195
let child = Syntax ( SyntaxData ( absoluteRaw, parent: parent) )
190
196
if let token = child. lastToken {
191
197
return token
@@ -200,7 +206,9 @@ public extension SyntaxProtocol {
200
206
guard let parent = self . parent else {
201
207
return nil
202
208
}
203
- for absoluteRaw in PresentRawSyntaxNextSiblings ( _syntaxNode) {
209
+ let siblings = PresentRawSyntaxChildren ( parent)
210
+ let nextSiblingIndex = siblings. index ( after: self . index)
211
+ for absoluteRaw in siblings [ nextSiblingIndex... ] {
204
212
let child = Syntax ( SyntaxData ( absoluteRaw, parent: parent) )
205
213
if let token = child. firstToken {
206
214
return token
0 commit comments