@@ -1584,29 +1584,24 @@ fileprivate final class TokenStreamCreator: SyntaxVisitor {
1584
1584
1585
1585
override func visit( _ node: AttributeSyntax ) -> SyntaxVisitorContinueKind {
1586
1586
before ( node. firstToken, tokens: . open)
1587
- if node. argument != nil {
1587
+ switch node. argument {
1588
+ case . argumentList( let argumentList) ? :
1589
+ if let leftParen = node. leftParen, let rightParen = node. rightParen {
1590
+ arrangeFunctionCallArgumentList (
1591
+ argumentList,
1592
+ leftDelimiter: leftParen,
1593
+ rightDelimiter: rightParen,
1594
+ forcesBreakBeforeRightDelimiter: false )
1595
+ }
1596
+ case . some:
1588
1597
// Wrap the attribute's arguments in their own group, so arguments stay together with a higher
1589
1598
// affinity than the overall attribute (e.g. allows a break after the opening "(" and then
1590
1599
// having the entire argument list on 1 line). Necessary spaces and breaks are added inside of
1591
1600
// the argument, using type specific visitor methods.
1592
1601
after ( node. leftParen, tokens: . break( . open, size: 0 ) , . open( argumentListConsistency ( ) ) )
1593
1602
before ( node. rightParen, tokens: . break( . close, size: 0 ) , . close)
1594
- }
1595
- after ( node. lastToken, tokens: . close)
1596
- return . visitChildren
1597
- }
1598
-
1599
- override func visit( _ node: CustomAttributeSyntax ) -> SyntaxVisitorContinueKind {
1600
- // "Custom attributes" are better known to users as "property wrappers".
1601
- before ( node. firstToken, tokens: . open)
1602
- if let argumentList = node. argumentList,
1603
- let leftParen = node. leftParen, let rightParen = node. rightParen
1604
- {
1605
- arrangeFunctionCallArgumentList (
1606
- argumentList,
1607
- leftDelimiter: leftParen,
1608
- rightDelimiter: rightParen,
1609
- forcesBreakBeforeRightDelimiter: false )
1603
+ case nil :
1604
+ break
1610
1605
}
1611
1606
after ( node. lastToken, tokens: . close)
1612
1607
return . visitChildren
0 commit comments