@@ -200,27 +200,29 @@ private final class TokenStreamCreator: SyntaxVisitor {
200200
201201 override func visit( _ node: FunctionCallArgumentSyntax ) {
202202 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)
211210 }
212211
213212 override func visit( _ node: ClosureExprSyntax ) {
214213 before ( node. firstToken, tokens: . reset)
215214 if let signature = node. signature {
216215 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+ }
218221 before ( node. rightBrace, tokens: . break( offset: - 2 ) , . close)
219222 } else {
220- before ( node. statements . firstToken , tokens: . break( offset: 2 ) , . open( . consistent, 0 ) )
223+ after ( node. leftBrace , tokens: . break( offset: 2 ) , . open( . consistent, 0 ) )
221224 before ( node. rightBrace, tokens: . break( offset: - 2 ) , . close)
222225 }
223-
224226 super. visit ( node)
225227 }
226228
@@ -230,19 +232,33 @@ private final class TokenStreamCreator: SyntaxVisitor {
230232 }
231233
232234 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)
235239 after ( node. output? . lastToken, tokens: . break)
236240 after ( node. throwsTok, tokens: . break)
237241 after ( node. lastToken, tokens: . close)
238242 super. visit ( node)
239243 }
240244
241245 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)
242248 super. visit ( node)
243249 }
244250
245251 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+ }
246262 super. visit ( node)
247263 }
248264
@@ -1398,7 +1414,7 @@ private final class TokenStreamCreator: SyntaxVisitor {
13981414 if index > 0 || isStartOfFile {
13991415 if token. withoutTrivia ( ) . text == " } " {
14001416 if let previousToken = token. previousToken,
1401- previousToken. withoutTrivia ( ) . text == " { " {
1417+ ( [ " { " , " in " ] . contains { $0 == previousToken. withoutTrivia ( ) . text } ) {
14021418 // do nothing
14031419 } else {
14041420 appendToken ( . newline)
0 commit comments