@@ -200,27 +200,29 @@ private final class TokenStreamCreator: SyntaxVisitor {
200
200
201
201
override func visit( _ node: FunctionCallArgumentSyntax ) {
202
202
after ( node. colon, tokens: . break)
203
-
204
- before ( node. firstToken, tokens: . open)
205
- if let trailingComma = node. trailingComma {
206
- after ( trailingComma, tokens: . close, . break)
207
- } else {
208
- after ( node. lastToken, tokens: . close)
209
- }
210
- super. visit ( node)
203
+ before ( node. firstToken, tokens: . open)
204
+ if let trailingComma = node. trailingComma {
205
+ after ( trailingComma, tokens: . close, . break)
206
+ } else {
207
+ after ( node. lastToken, tokens: . close)
208
+ }
209
+ super. visit ( node)
211
210
}
212
211
213
212
override func visit( _ node: ClosureExprSyntax ) {
214
213
before ( node. firstToken, tokens: . reset)
215
214
if let signature = node. signature {
216
215
before ( signature. firstToken, tokens: . break( offset: 2 ) )
217
- before ( node. statements. firstToken, tokens: . newline( offset: 2 ) , . open( . consistent, 0 ) )
216
+ if node. statements. count > 0 {
217
+ after ( signature. inTok, tokens: . newline( offset: 2 ) , . open( . consistent, 0 ) )
218
+ } else {
219
+ after ( signature. inTok, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
220
+ }
218
221
before ( node. rightBrace, tokens: . break( offset: - 2 ) , . close)
219
222
} else {
220
- before ( node. statements . firstToken , tokens: . break( offset: 2 ) , . open( . consistent, 0 ) )
223
+ after ( node. leftBrace , tokens: . break( offset: 2 ) , . open( . consistent, 0 ) )
221
224
before ( node. rightBrace, tokens: . break( offset: - 2 ) , . close)
222
225
}
223
-
224
226
super. visit ( node)
225
227
}
226
228
@@ -230,19 +232,33 @@ private final class TokenStreamCreator: SyntaxVisitor {
230
232
}
231
233
232
234
override func visit( _ node: ClosureSignatureSyntax ) {
233
- before ( node. firstToken, tokens: . open( . inconsistent, 2 ) )
234
- after ( node. input? . lastToken, tokens: . break)
235
+ before ( node. firstToken, tokens: . open( . inconsistent, 0 ) )
236
+ after ( node. capture? . lastToken, tokens: . break)
237
+ before ( node. input? . firstToken, tokens: . open)
238
+ after ( node. input? . lastToken, tokens: . close, . break)
235
239
after ( node. output? . lastToken, tokens: . break)
236
240
after ( node. throwsTok, tokens: . break)
237
241
after ( node. lastToken, tokens: . close)
238
242
super. visit ( node)
239
243
}
240
244
241
245
override func visit( _ node: ClosureCaptureSignatureSyntax ) {
246
+ after ( node. leftSquare, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
247
+ before ( node. rightSquare, tokens: . break( size: 0 , offset: - 2 ) , . close)
242
248
super. visit ( node)
243
249
}
244
250
245
251
override func visit( _ node: ClosureCaptureItemSyntax ) {
252
+ before ( node. firstToken, tokens: . open)
253
+ after ( node. specifier? . lastToken, tokens: . break)
254
+ before ( node. assignToken, tokens: . break)
255
+ after ( node. assignToken, tokens: . break)
256
+ if let trailingComma = node. trailingComma {
257
+ before ( trailingComma, tokens: . close)
258
+ after ( trailingComma, tokens: . break)
259
+ } else {
260
+ after ( node. lastToken, tokens: . close)
261
+ }
246
262
super. visit ( node)
247
263
}
248
264
@@ -1398,7 +1414,7 @@ private final class TokenStreamCreator: SyntaxVisitor {
1398
1414
if index > 0 || isStartOfFile {
1399
1415
if token. withoutTrivia ( ) . text == " } " {
1400
1416
if let previousToken = token. previousToken,
1401
- previousToken. withoutTrivia ( ) . text == " { " {
1417
+ ( [ " { " , " in " ] . contains { $0 == previousToken. withoutTrivia ( ) . text } ) {
1402
1418
// do nothing
1403
1419
} else {
1404
1420
appendToken ( . newline)
0 commit comments