@@ -136,25 +136,15 @@ internal extension SyntaxProtocol {
136
136
137
137
public extension SyntaxProtocol {
138
138
/// A sequence over the `present` children of this node.
139
- var children : SyntaxChildren {
140
- return SyntaxChildren ( _syntaxNode)
139
+ func children( syntaxTreeViewMode : SyntaxTreeViewMode ) -> SyntaxChildren {
140
+ return SyntaxChildren ( _syntaxNode, syntaxTreeViewMode : syntaxTreeViewMode )
141
141
}
142
142
143
143
/// The index of this node in a `SyntaxChildren` collection.
144
144
var index : SyntaxChildrenIndex {
145
145
return SyntaxChildrenIndex ( self . data. absoluteRaw. info)
146
146
}
147
147
148
- /// Whether or not this node is marked as `present`.
149
- var isPresent : Bool {
150
- return raw. isPresent
151
- }
152
-
153
- /// Whether or not this node is marked as `missing`.
154
- var isMissing : Bool {
155
- return raw. isMissing
156
- }
157
-
158
148
/// Whether or not this node is a token one.
159
149
var isToken : Bool {
160
150
return raw. isToken
@@ -190,61 +180,61 @@ public extension SyntaxProtocol {
190
180
191
181
/// Recursively walks through the tree to find the token semantically before
192
182
/// this node.
193
- var previousToken : TokenSyntax ? {
183
+ func previousToken( syntaxTreeViewMode : SyntaxTreeViewMode ) -> TokenSyntax ? {
194
184
guard let parent = self . parent else {
195
185
return nil
196
186
}
197
- let siblings = PresentRawSyntaxChildren ( parent)
187
+ let siblings = NonNilRawSyntaxChildren ( parent, syntaxTreeViewMode : syntaxTreeViewMode )
198
188
for absoluteRaw in siblings [ ..< self . index] . reversed ( ) {
199
189
let child = Syntax ( SyntaxData ( absoluteRaw, parent: parent) )
200
- if let token = child. lastToken {
190
+ if let token = child. lastToken ( syntaxTreeViewMode : syntaxTreeViewMode ) {
201
191
return token
202
192
}
203
193
}
204
- return parent. previousToken
194
+ return parent. previousToken ( syntaxTreeViewMode : syntaxTreeViewMode )
205
195
}
206
196
207
197
/// Recursively walks through the tree to find the next token semantically
208
198
/// after this node.
209
- var nextToken : TokenSyntax ? {
199
+ func nextToken( syntaxTreeViewMode : SyntaxTreeViewMode ) -> TokenSyntax ? {
210
200
guard let parent = self . parent else {
211
201
return nil
212
202
}
213
- let siblings = PresentRawSyntaxChildren ( parent)
203
+ let siblings = NonNilRawSyntaxChildren ( parent, syntaxTreeViewMode : syntaxTreeViewMode )
214
204
let nextSiblingIndex = siblings. index ( after: self . index)
215
205
for absoluteRaw in siblings [ nextSiblingIndex... ] {
216
206
let child = Syntax ( SyntaxData ( absoluteRaw, parent: parent) )
217
- if let token = child. firstToken {
207
+ if let token = child. firstToken ( syntaxTreeViewMode : syntaxTreeViewMode ) {
218
208
return token
219
209
}
220
210
}
221
- return parent. nextToken
211
+ return parent. nextToken ( syntaxTreeViewMode : syntaxTreeViewMode )
222
212
}
223
213
224
214
/// Returns the first token node that is part of this syntax node.
225
- var firstToken : TokenSyntax ? {
226
- if isMissing { return nil }
215
+ func firstToken( syntaxTreeViewMode : SyntaxTreeViewMode ) -> TokenSyntax ? {
216
+ guard syntaxTreeViewMode . shouldTraverse ( node : raw ) else { return nil }
227
217
if let token = _syntaxNode. as ( TokenSyntax . self) {
228
218
return token
229
219
}
230
220
231
- for child in children {
232
- if let token = child. firstToken {
221
+ for child in children ( syntaxTreeViewMode : syntaxTreeViewMode ) {
222
+ if let token = child. firstToken ( syntaxTreeViewMode : syntaxTreeViewMode ) {
233
223
return token
234
224
}
235
225
}
236
226
return nil
237
227
}
238
228
239
229
/// Returns the last token node that is part of this syntax node.
240
- var lastToken : TokenSyntax ? {
241
- if isMissing { return nil }
230
+ func lastToken( syntaxTreeViewMode : SyntaxTreeViewMode ) -> TokenSyntax ? {
231
+ guard syntaxTreeViewMode . shouldTraverse ( node : raw ) else { return nil }
242
232
if let token = _syntaxNode. as ( TokenSyntax . self) {
243
233
return token
244
234
}
245
235
246
- for child in children. reversed ( ) {
247
- if let tok = child. lastToken {
236
+ for child in children ( syntaxTreeViewMode : syntaxTreeViewMode ) . reversed ( ) {
237
+ if let tok = child. lastToken ( syntaxTreeViewMode : syntaxTreeViewMode ) {
248
238
return tok
249
239
}
250
240
}
@@ -377,8 +367,8 @@ public extension SyntaxProtocol {
377
367
}
378
368
379
369
/// Sequence of tokens that are part of this Syntax node.
380
- var tokens : TokenSequence {
381
- return TokenSequence ( _syntaxNode)
370
+ func tokens( syntaxTreeViewMode : SyntaxTreeViewMode ) -> TokenSequence {
371
+ return TokenSequence ( _syntaxNode, syntaxTreeViewMode : syntaxTreeViewMode )
382
372
}
383
373
384
374
/// Sequence of `SyntaxClassifiedRange`s for this syntax node.
@@ -466,15 +456,17 @@ public struct TokenSequence: Sequence {
466
456
public struct Iterator : IteratorProtocol {
467
457
var nextToken : TokenSyntax ?
468
458
let endPosition : AbsolutePosition
459
+ let syntaxTreeViewMode : SyntaxTreeViewMode
469
460
470
- init ( _ token: TokenSyntax ? , endPosition: AbsolutePosition ) {
461
+ init ( _ token: TokenSyntax ? , endPosition: AbsolutePosition , syntaxTreeViewMode : SyntaxTreeViewMode ) {
471
462
self . nextToken = token
472
463
self . endPosition = endPosition
464
+ self . syntaxTreeViewMode = syntaxTreeViewMode
473
465
}
474
466
475
467
public mutating func next( ) -> TokenSyntax ? {
476
468
guard let token = self . nextToken else { return nil }
477
- self . nextToken = token. nextToken
469
+ self . nextToken = token. nextToken ( syntaxTreeViewMode : syntaxTreeViewMode )
478
470
// Make sure we stop once we reach the end of the containing node.
479
471
if let nextTok = self . nextToken, nextTok. position >= self . endPosition {
480
472
self . nextToken = nil
@@ -484,17 +476,19 @@ public struct TokenSequence: Sequence {
484
476
}
485
477
486
478
let node : Syntax
479
+ let syntaxTreeViewMode : SyntaxTreeViewMode
487
480
488
- public init ( _ node: Syntax ) {
481
+ public init ( _ node: Syntax , syntaxTreeViewMode : SyntaxTreeViewMode ) {
489
482
self . node = node
483
+ self . syntaxTreeViewMode = syntaxTreeViewMode
490
484
}
491
485
492
486
public func makeIterator( ) -> Iterator {
493
- return Iterator ( node. firstToken, endPosition: node. endPosition)
487
+ return Iterator ( node. firstToken ( syntaxTreeViewMode : syntaxTreeViewMode ) , endPosition: node. endPosition, syntaxTreeViewMode : syntaxTreeViewMode )
494
488
}
495
489
496
490
public func reversed( ) -> ReversedTokenSequence {
497
- return ReversedTokenSequence ( node)
491
+ return ReversedTokenSequence ( node, syntaxTreeViewMode : syntaxTreeViewMode )
498
492
}
499
493
}
500
494
@@ -509,15 +503,17 @@ public struct ReversedTokenSequence: Sequence {
509
503
public struct Iterator : IteratorProtocol {
510
504
var nextToken : TokenSyntax ?
511
505
let startPosition : AbsolutePosition
506
+ let syntaxTreeViewMode : SyntaxTreeViewMode
512
507
513
- init ( _ token: TokenSyntax ? , startPosition: AbsolutePosition ) {
508
+ init ( _ token: TokenSyntax ? , startPosition: AbsolutePosition , syntaxTreeViewMode : SyntaxTreeViewMode ) {
514
509
self . nextToken = token
515
510
self . startPosition = startPosition
511
+ self . syntaxTreeViewMode = syntaxTreeViewMode
516
512
}
517
513
518
514
public mutating func next( ) -> TokenSyntax ? {
519
515
guard let token = self . nextToken else { return nil }
520
- self . nextToken = token. previousToken
516
+ self . nextToken = token. previousToken ( syntaxTreeViewMode : syntaxTreeViewMode )
521
517
// Make sure we stop once we went beyond the start of the containing node.
522
518
if let nextTok = self . nextToken, nextTok. position < self . startPosition {
523
519
self . nextToken = nil
@@ -527,17 +523,19 @@ public struct ReversedTokenSequence: Sequence {
527
523
}
528
524
529
525
let node : Syntax
526
+ let syntaxTreeViewMode : SyntaxTreeViewMode
530
527
531
- public init ( _ node: Syntax ) {
528
+ public init ( _ node: Syntax , syntaxTreeViewMode : SyntaxTreeViewMode ) {
532
529
self . node = node
530
+ self . syntaxTreeViewMode = syntaxTreeViewMode
533
531
}
534
532
535
533
public func makeIterator( ) -> Iterator {
536
- return Iterator ( node. lastToken, startPosition: node. position)
534
+ return Iterator ( node. lastToken ( syntaxTreeViewMode : syntaxTreeViewMode ) , startPosition: node. position, syntaxTreeViewMode : syntaxTreeViewMode )
537
535
}
538
536
539
537
public func reversed( ) -> TokenSequence {
540
- return TokenSequence ( node)
538
+ return TokenSequence ( node, syntaxTreeViewMode : syntaxTreeViewMode )
541
539
}
542
540
}
543
541
0 commit comments