@@ -213,6 +213,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
213213 }
214214
215215 override func visit( _ node: EnumDeclSyntax ) {
216+ if let attributes = node. attributes {
217+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
218+ after ( attributes. lastToken, tokens: . open)
219+ } else {
220+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
221+ }
222+
216223 after ( node. enumKeyword, tokens: . break)
217224
218225 before (
@@ -224,7 +231,10 @@ private final class TokenStreamCreator: SyntaxVisitor {
224231 if node. genericWhereClause == nil {
225232 before ( node. members. leftBrace, tokens: . break)
226233 }
227- after ( node. members. leftBrace, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
234+ after (
235+ node. members. leftBrace,
236+ tokens: . close, . close, . break( size: 0 , offset: 2 ) , . open( . consistent, 0 )
237+ )
228238 before ( node. members. rightBrace, tokens: . break( size: 0 , offset: - 2 ) , . close)
229239
230240 super. visit ( node)
@@ -429,6 +439,26 @@ private final class TokenStreamCreator: SyntaxVisitor {
429439 }
430440
431441 override func visit( _ node: AttributeSyntax ) {
442+ if node. balancedTokens. count > 0 {
443+ for i in 0 ..< ( node. balancedTokens. count - 1 ) {
444+ let tokens = node. balancedTokens
445+ switch ( tokens [ i] . tokenKind, tokens [ i+ 1 ] . tokenKind) {
446+ case ( . leftParen, _) : ( )
447+ case ( _, . rightParen) : ( )
448+ case ( _, . comma) : ( )
449+ case ( _, . colon) : ( )
450+ default :
451+ after ( tokens [ i] , tokens: . space)
452+ }
453+ }
454+ after ( node. balancedTokens. lastToken, tokens: . newline)
455+ } else {
456+ if node. parent? . parent is ImportDeclSyntax {
457+ after ( node. lastToken, tokens: . space)
458+ } else {
459+ after ( node. lastToken, tokens: . break)
460+ }
461+ }
432462 super. visit ( node)
433463 }
434464
@@ -437,6 +467,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
437467 }
438468
439469 override func visit( _ node: ClassDeclSyntax ) {
470+ if let attributes = node. attributes {
471+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
472+ after ( attributes. lastToken, tokens: . open)
473+ } else {
474+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
475+ }
476+
440477 after ( node. classKeyword, tokens: . break)
441478
442479 before (
@@ -448,7 +485,10 @@ private final class TokenStreamCreator: SyntaxVisitor {
448485 if node. genericWhereClause == nil {
449486 before ( node. members. leftBrace, tokens: . break)
450487 }
451- after ( node. members. leftBrace, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
488+ after (
489+ node. members. leftBrace,
490+ tokens: . close, . close, . break( size: 0 , offset: 2 ) , . open( . consistent, 0 )
491+ )
452492 before ( node. members. rightBrace, tokens: . break( size: 0 , offset: - 2 ) , . close)
453493
454494 super. visit ( node)
@@ -522,7 +562,6 @@ private final class TokenStreamCreator: SyntaxVisitor {
522562 }
523563
524564 override func visit( _ node: ImportDeclSyntax ) {
525- after ( node. attributes? . lastToken, tokens: . space)
526565 after ( node. importTok, tokens: . space)
527566 after ( node. importKind, tokens: . space)
528567 super. visit ( node)
@@ -536,6 +575,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
536575 }
537576
538577 override func visit( _ node: StructDeclSyntax ) {
578+ if let attributes = node. attributes {
579+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
580+ after ( attributes. lastToken, tokens: . open)
581+ } else {
582+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
583+ }
584+
539585 after ( node. structKeyword, tokens: . break)
540586
541587 before (
@@ -548,7 +594,10 @@ private final class TokenStreamCreator: SyntaxVisitor {
548594 if node. genericWhereClause == nil {
549595 before ( node. members. leftBrace, tokens: . break)
550596 }
551- after ( node. members. leftBrace, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
597+ after (
598+ node. members. leftBrace,
599+ tokens: . close, . close, . break( size: 0 , offset: 2 ) , . open( . consistent, 0 )
600+ )
552601 before ( node. members. rightBrace, tokens: . break( size: 0 , offset: - 2 ) , . close)
553602
554603 super. visit ( node)
@@ -605,6 +654,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
605654 }
606655
607656 override func visit( _ node: FunctionDeclSyntax ) {
657+ if let attributes = node. attributes {
658+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
659+ after ( attributes. lastToken, tokens: . open)
660+ } else {
661+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
662+ }
663+
608664 after ( node. funcKeyword, tokens: . break)
609665
610666 before (
@@ -617,7 +673,7 @@ private final class TokenStreamCreator: SyntaxVisitor {
617673 if node. genericWhereClause == nil {
618674 before ( body. leftBrace, tokens: . break)
619675 }
620- after ( body. leftBrace, tokens: . break( offset: 2 ) , . open( . consistent, 0 ) )
676+ after ( body. leftBrace, tokens: . close , . close , . break( offset: 2 ) , . open( . consistent, 0 ) )
621677 before ( body. rightBrace, tokens: . break( offset: - 2 ) , . close)
622678 }
623679
@@ -657,8 +713,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
657713 }
658714
659715 override func visit( _ node: VariableDeclSyntax ) {
660- before ( node. firstToken, tokens: . open( . inconsistent, 0 ) )
661- after ( node. lastToken, tokens: . close)
716+ if let attributes = node. attributes {
717+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
718+ after ( attributes. lastToken, tokens: . open)
719+ } else {
720+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
721+ }
722+ after ( node. lastToken, tokens: . close, . close)
662723 after ( node. letOrVarKeyword, tokens: . break)
663724 super. visit ( node)
664725 }
@@ -668,6 +729,13 @@ private final class TokenStreamCreator: SyntaxVisitor {
668729 }
669730
670731 override func visit( _ node: ExtensionDeclSyntax ) {
732+ if let attributes = node. attributes {
733+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) )
734+ after ( attributes. lastToken, tokens: . open)
735+ } else {
736+ before ( node. firstToken, tokens: . space( size: 0 ) , . open( . consistent, 0 ) , . open)
737+ }
738+
671739 after ( node. extensionKeyword, tokens: . break)
672740
673741 before (
@@ -679,7 +747,10 @@ private final class TokenStreamCreator: SyntaxVisitor {
679747 if node. genericWhereClause == nil {
680748 before ( node. members. leftBrace, tokens: . break)
681749 }
682- after ( node. members. leftBrace, tokens: . break( size: 0 , offset: 2 ) , . open( . consistent, 0 ) )
750+ after (
751+ node. members. leftBrace,
752+ tokens: . close, . close, . break( size: 0 , offset: 2 ) , . open( . consistent, 0 )
753+ )
683754 before ( node. members. rightBrace, tokens: . break( size: 0 , offset: - 2 ) , . close)
684755
685756 super. visit ( node)
0 commit comments