@@ -23,124 +23,136 @@ fileprivate final class AddModifierRewriter: SyntaxRewriter {
2323 override func visit( _ node: VariableDeclSyntax ) -> DeclSyntax {
2424 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
2525 // token.
26- guard var modifiers = node. modifiers else {
26+ guard ! node. modifiers. isEmpty else {
2727 let result = setOnlyModifier ( in: node, keywordKeypath: \. bindingSpecifier)
2828 return DeclSyntax ( result)
2929 }
30+ var node = node
31+
3032 // 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) }
3234
3335 // 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)
3638 }
3739
3840 override func visit( _ node: FunctionDeclSyntax ) -> DeclSyntax {
3941 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
4042 // token.
41- guard var modifiers = node. modifiers else {
43+ guard ! node. modifiers. isEmpty else {
4244 let result = setOnlyModifier ( in: node, keywordKeypath: \. funcKeyword)
4345 return DeclSyntax ( result)
4446 }
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)
4851 }
4952
5053 override func visit( _ node: AssociatedTypeDeclSyntax ) -> DeclSyntax {
5154 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
5255 // token.
53- guard var modifiers = node. modifiers else {
56+ guard ! node. modifiers. isEmpty else {
5457 let result = setOnlyModifier ( in: node, keywordKeypath: \. associatedtypeKeyword)
5558 return DeclSyntax ( result)
5659 }
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)
6064 }
6165
6266 override func visit( _ node: ClassDeclSyntax ) -> DeclSyntax {
6367 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
6468 // token.
65- guard var modifiers = node. modifiers else {
69+ guard ! node. modifiers. isEmpty else {
6670 let result = setOnlyModifier ( in: node, keywordKeypath: \. classKeyword)
6771 return DeclSyntax ( result)
6872 }
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)
7277 }
7378
7479 override func visit( _ node: EnumDeclSyntax ) -> DeclSyntax {
7580 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
7681 // token.
77- guard var modifiers = node. modifiers else {
82+ guard ! node. modifiers. isEmpty else {
7883 let result = setOnlyModifier ( in: node, keywordKeypath: \. enumKeyword)
7984 return DeclSyntax ( result)
8085 }
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)
8490 }
8591
8692 override func visit( _ node: ProtocolDeclSyntax ) -> DeclSyntax {
8793 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
8894 // token.
89- guard var modifiers = node. modifiers else {
95+
96+ guard !node. modifiers. isEmpty else {
9097 let result = setOnlyModifier ( in: node, keywordKeypath: \. protocolKeyword)
9198 return DeclSyntax ( result)
9299 }
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)
96104 }
97105
98106 override func visit( _ node: StructDeclSyntax ) -> DeclSyntax {
99107 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
100108 // token.
101- guard var modifiers = node. modifiers else {
109+ guard ! node. modifiers. isEmpty else {
102110 let result = setOnlyModifier ( in: node, keywordKeypath: \. structKeyword)
103111 return DeclSyntax ( result)
104112 }
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)
108117 }
109118
110119 override func visit( _ node: TypeAliasDeclSyntax ) -> DeclSyntax {
111120 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
112121 // token.
113- guard var modifiers = node. modifiers else {
122+ guard ! node. modifiers. isEmpty else {
114123 let result = setOnlyModifier ( in: node, keywordKeypath: \. typealiasKeyword)
115124 return DeclSyntax ( result)
116125 }
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)
120130 }
121131
122132 override func visit( _ node: InitializerDeclSyntax ) -> DeclSyntax {
123133 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
124134 // token.
125- guard var modifiers = node. modifiers else {
135+ guard ! node. modifiers. isEmpty else {
126136 let result = setOnlyModifier ( in: node, keywordKeypath: \. initKeyword)
127137 return DeclSyntax ( result)
128138 }
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)
132143 }
133144
134145 override func visit( _ node: SubscriptDeclSyntax ) -> DeclSyntax {
135146 // Check for modifiers, and, if none, insert the modifier and relocate trivia from the displaced
136147 // token.
137- guard var modifiers = node. modifiers else {
148+ guard ! node. modifiers. isEmpty else {
138149 let result = setOnlyModifier ( in: node, keywordKeypath: \. subscriptKeyword)
139150 return DeclSyntax ( result)
140151 }
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)
144156 }
145157
146158 /// Moves trivia in the given node to correct the placement of potentially displaced trivia in the
0 commit comments