@@ -43,36 +43,15 @@ extension Parser {
43
43
///
44
44
/// This is also used for testing purposes to ensure incremental reparsing
45
45
/// worked as expected.
46
- public protocol IncrementalParseReusedNodeDelegate {
47
- /// Accepts ``Syntax`` node of skipped source region.
48
- ///
49
- /// - Parameters:
50
- /// - previousNode: The node from the previous tree that is associated with
51
- /// the skipped source region.
52
- func parserReusedNode( previousNode: Syntax )
53
- }
54
-
55
- /// An implementation of `IncrementalParseReusedNodeDelegate` that just collects
56
- /// the range and re-used node into an array.
57
- public final class IncrementalParseReusedNodeCollector :
58
- IncrementalParseReusedNodeDelegate
59
- {
60
- public var nodes : [ Syntax ] = [ ]
61
-
62
- public init ( ) { }
63
-
64
- public func parserReusedNode( previousNode: Syntax ) {
65
- nodes. append ( previousNode)
66
- }
67
- }
46
+ public typealias ReusedNodeCallback = ( _ nodes: Syntax ) -> ( )
68
47
69
48
/// Keeps track of a previously parsed syntax tree and the source edits that
70
49
/// occurred since it was created.
71
50
public final class IncrementalParseTransition {
72
51
fileprivate let previousTree : SourceFileSyntax
73
52
fileprivate let edits : ConcurrentEdits
74
53
fileprivate let lookaheadRanges : LookaheadRanges
75
- fileprivate let reusedDelegate : IncrementalParseReusedNodeDelegate ?
54
+ fileprivate let reusedNodeCallback : ReusedNodeCallback ?
76
55
77
56
/// - Parameters:
78
57
/// - previousTree: The previous tree to do lookups on.
@@ -84,12 +63,12 @@ public final class IncrementalParseTransition {
84
63
previousTree: SourceFileSyntax ,
85
64
edits: ConcurrentEdits ,
86
65
lookaheadRanges: LookaheadRanges ,
87
- reusedNodeDelegate : IncrementalParseReusedNodeDelegate ? = nil
66
+ reusedNodeCallback : ReusedNodeCallback ? = nil
88
67
) {
89
68
self . previousTree = previousTree
90
69
self . edits = edits
91
70
self . lookaheadRanges = lookaheadRanges
92
- self . reusedDelegate = reusedNodeDelegate
71
+ self . reusedNodeCallback = reusedNodeCallback
93
72
}
94
73
}
95
74
@@ -110,8 +89,8 @@ struct IncrementalParseLookup {
110
89
return transition. edits
111
90
}
112
91
113
- fileprivate var reusedDelegate : IncrementalParseReusedNodeDelegate ? {
114
- return transition. reusedDelegate
92
+ fileprivate var reusedCallback : ReusedNodeCallback ? {
93
+ return transition. reusedNodeCallback
115
94
}
116
95
117
96
/// Does a lookup to see if the current source `offset` should be associated
@@ -132,10 +111,8 @@ struct IncrementalParseLookup {
132
111
}
133
112
let prevPosition = AbsolutePosition ( utf8Offset: prevOffset)
134
113
let node = cursorLookup ( prevPosition: prevPosition, kind: kind)
135
- if let delegate = reusedDelegate, let node {
136
- delegate. parserReusedNode (
137
- previousNode: node
138
- )
114
+ if let node {
115
+ reusedCallback ? ( node)
139
116
}
140
117
return node
141
118
}
0 commit comments