@@ -28,7 +28,7 @@ public enum SyntaxClassification {
28
28
% end
29
29
}
30
30
31
- fileprivate class _SyntaxClassifier: SyntaxVisitor {
31
+ fileprivate struct _SyntaxClassifier: SyntaxVisitor {
32
32
33
33
/// The top of the `contextStack` determines the classification for all tokens
34
34
/// encountered that do not have a native classification. If `force` is `true`
@@ -41,13 +41,13 @@ fileprivate class _SyntaxClassifier: SyntaxVisitor {
41
41
/// array.
42
42
var classifications : [ ( TokenSyntax , SyntaxClassification ) ] = [ ]
43
43
44
- private func visit(
44
+ mutating private func visit(
45
45
_ node: Syntax ,
46
46
classification: SyntaxClassification ,
47
47
force: Bool = false
48
48
) {
49
49
contextStack. append ( ( classification: classification, force: force) )
50
- node. walk ( self )
50
+ node. walk ( & self )
51
51
contextStack. removeLast ( )
52
52
}
53
53
@@ -67,7 +67,7 @@ fileprivate class _SyntaxClassifier: SyntaxVisitor {
67
67
}
68
68
}
69
69
70
- override func visit( _ token: TokenSyntax ) -> SyntaxVisitorContinueKind {
70
+ mutating func visit( _ token: TokenSyntax ) -> SyntaxVisitorContinueKind {
71
71
assert ( token. isPresent)
72
72
// FIXME: We need to come up with some way in which the SyntaxClassifier can
73
73
// classify trivia (i.e. comments). In particular we need to be able to
@@ -91,7 +91,7 @@ fileprivate class _SyntaxClassifier: SyntaxVisitor {
91
91
92
92
% for node in SYNTAX_NODES:
93
93
% if is_visitable( node) :
94
- override func visit( _ node: ${ node. name} ) -> SyntaxVisitorContinueKind {
94
+ mutating func visit( _ node: ${ node. name} ) -> SyntaxVisitorContinueKind {
95
95
% if node. is_unknown ( ) or node. is_syntax_collection ( ) :
96
96
return . visitChildren
97
97
% else :
@@ -103,7 +103,7 @@ fileprivate class _SyntaxClassifier: SyntaxVisitor {
103
103
classification: . ${ child. classification. swift_name} ,
104
104
force: ${ " true " if child. force_classification else " false " } )
105
105
% else:
106
- ${ child. swift_name} . walk ( self )
106
+ ${ child. swift_name} . walk ( & self )
107
107
% end
108
108
}
109
109
% else:
@@ -112,7 +112,7 @@ fileprivate class _SyntaxClassifier: SyntaxVisitor {
112
112
classification: . ${ child. classification. swift_name} ,
113
113
force: ${ " true " if child. force_classification else " false " } )
114
114
% else:
115
- node. ${ child. swift_name} . walk ( self )
115
+ node. ${ child. swift_name} . walk ( & self )
116
116
% end
117
117
% end
118
118
% end
@@ -130,8 +130,8 @@ public enum SyntaxClassifier {
130
130
public static func classifyTokensInTree(
131
131
_ syntaxTree: SourceFileSyntax
132
132
) -> [ ( TokenSyntax , SyntaxClassification ) ] {
133
- let classifier = _SyntaxClassifier ( )
134
- syntaxTree. walk ( classifier)
133
+ var classifier = _SyntaxClassifier ( )
134
+ syntaxTree. walk ( & classifier)
135
135
return classifier. classifications
136
136
}
137
137
}
0 commit comments