@@ -23,124 +23,136 @@ fileprivate final class AddModifierRewriter: SyntaxRewriter {
23
23
override func visit( _ node: VariableDeclSyntax ) -> DeclSyntax {
24
24
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
25
25
// token.
26
- guard var modifiers = node. modifiers else {
26
+ guard ! node. modifiers. isEmpty else {
27
27
let result = setOnlyModifier ( in: node, keywordKeypath: \. bindingSpecifier)
28
28
return DeclSyntax ( result)
29
29
}
30
+ var node = node
31
+
30
32
// If variable already has an accessor keyword, skip (do not overwrite)
31
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
33
+ guard node . modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
32
34
33
35
// Put accessor keyword before the first modifier keyword in the declaration
34
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
35
- return DeclSyntax ( node. with ( \ . modifiers , modifiers ) )
36
+ node . modifiers. triviaPreservingInsert ( modifierKeyword, at: node . modifiers. startIndex)
37
+ return DeclSyntax ( node)
36
38
}
37
39
38
40
override func visit( _ node: FunctionDeclSyntax ) -> DeclSyntax {
39
41
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
40
42
// token.
41
- guard var modifiers = node. modifiers else {
43
+ guard ! node. modifiers. isEmpty else {
42
44
let result = setOnlyModifier ( in: node, keywordKeypath: \. funcKeyword)
43
45
return DeclSyntax ( result)
44
46
}
45
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
46
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
47
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
47
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
48
+ var node = node
49
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
50
+ return DeclSyntax ( node)
48
51
}
49
52
50
53
override func visit( _ node: AssociatedTypeDeclSyntax ) -> DeclSyntax {
51
54
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
52
55
// token.
53
- guard var modifiers = node. modifiers else {
56
+ guard ! node. modifiers. isEmpty else {
54
57
let result = setOnlyModifier ( in: node, keywordKeypath: \. associatedtypeKeyword)
55
58
return DeclSyntax ( result)
56
59
}
57
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
58
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
59
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
60
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
61
+ var node = node
62
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
63
+ return DeclSyntax ( node)
60
64
}
61
65
62
66
override func visit( _ node: ClassDeclSyntax ) -> DeclSyntax {
63
67
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
64
68
// token.
65
- guard var modifiers = node. modifiers else {
69
+ guard ! node. modifiers. isEmpty else {
66
70
let result = setOnlyModifier ( in: node, keywordKeypath: \. classKeyword)
67
71
return DeclSyntax ( result)
68
72
}
69
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
70
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
71
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
73
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
74
+ var node = node
75
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
76
+ return DeclSyntax ( node)
72
77
}
73
78
74
79
override func visit( _ node: EnumDeclSyntax ) -> DeclSyntax {
75
80
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
76
81
// token.
77
- guard var modifiers = node. modifiers else {
82
+ guard ! node. modifiers. isEmpty else {
78
83
let result = setOnlyModifier ( in: node, keywordKeypath: \. enumKeyword)
79
84
return DeclSyntax ( result)
80
85
}
81
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
82
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
83
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
86
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
87
+ var node = node
88
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
89
+ return DeclSyntax ( node)
84
90
}
85
91
86
92
override func visit( _ node: ProtocolDeclSyntax ) -> DeclSyntax {
87
93
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
88
94
// token.
89
- guard var modifiers = node. modifiers else {
95
+
96
+ guard !node. modifiers. isEmpty else {
90
97
let result = setOnlyModifier ( in: node, keywordKeypath: \. protocolKeyword)
91
98
return DeclSyntax ( result)
92
99
}
93
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
94
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
95
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
100
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
101
+ var node = node
102
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
103
+ return DeclSyntax ( node)
96
104
}
97
105
98
106
override func visit( _ node: StructDeclSyntax ) -> DeclSyntax {
99
107
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
100
108
// token.
101
- guard var modifiers = node. modifiers else {
109
+ guard ! node. modifiers. isEmpty else {
102
110
let result = setOnlyModifier ( in: node, keywordKeypath: \. structKeyword)
103
111
return DeclSyntax ( result)
104
112
}
105
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
106
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
107
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
113
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
114
+ var node = node
115
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
116
+ return DeclSyntax ( node)
108
117
}
109
118
110
119
override func visit( _ node: TypeAliasDeclSyntax ) -> DeclSyntax {
111
120
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
112
121
// token.
113
- guard var modifiers = node. modifiers else {
122
+ guard ! node. modifiers. isEmpty else {
114
123
let result = setOnlyModifier ( in: node, keywordKeypath: \. typealiasKeyword)
115
124
return DeclSyntax ( result)
116
125
}
117
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
118
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
119
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
126
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
127
+ var node = node
128
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
129
+ return DeclSyntax ( node)
120
130
}
121
131
122
132
override func visit( _ node: InitializerDeclSyntax ) -> DeclSyntax {
123
133
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
124
134
// token.
125
- guard var modifiers = node. modifiers else {
135
+ guard ! node. modifiers. isEmpty else {
126
136
let result = setOnlyModifier ( in: node, keywordKeypath: \. initKeyword)
127
137
return DeclSyntax ( result)
128
138
}
129
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
130
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
131
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
139
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
140
+ var node = node
141
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
142
+ return DeclSyntax ( node)
132
143
}
133
144
134
145
override func visit( _ node: SubscriptDeclSyntax ) -> DeclSyntax {
135
146
// Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
136
147
// token.
137
- guard var modifiers = node. modifiers else {
148
+ guard ! node. modifiers. isEmpty else {
138
149
let result = setOnlyModifier ( in: node, keywordKeypath: \. subscriptKeyword)
139
150
return DeclSyntax ( result)
140
151
}
141
- guard modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
142
- modifiers. triviaPreservingInsert ( modifierKeyword, at: modifiers. startIndex)
143
- return DeclSyntax ( node. with ( \. modifiers, modifiers) )
152
+ guard node. modifiers. accessLevelModifier == nil else { return DeclSyntax ( node) }
153
+ var node = node
154
+ node. modifiers. triviaPreservingInsert ( modifierKeyword, at: node. modifiers. startIndex)
155
+ return DeclSyntax ( node)
144
156
}
145
157
146
158
/// Moves trivia in the given node to correct the placement of potentially displaced trivia in the
0 commit comments