@@ -13,8 +13,8 @@ import SwiftSyntax
13
13
///
14
14
/// - SeeAlso: https://google.github.io/swift#enum-cases
15
15
public final class FullyIndirectEnum : SyntaxFormatRule {
16
- public override func visit( _ node: EnumDeclSyntax ) -> DeclSyntax {
17
16
17
+ public override func visit( _ node: EnumDeclSyntax ) -> DeclSyntax {
18
18
let enumMembers = node. members. members
19
19
guard allAreIndirectCases ( members: enumMembers) else { return node }
20
20
diagnose ( . reassignIndirectKeyword( name: node. identifier. text) , on: node. identifier)
@@ -25,7 +25,7 @@ public final class FullyIndirectEnum: SyntaxFormatRule {
25
25
if let caseMember = member. decl as? EnumCaseDeclSyntax {
26
26
guard let caseModifiers = caseMember. modifiers else { continue }
27
27
guard let firstModifier = caseModifiers. first else { continue }
28
- let newCase = caseMember. withModifiers ( removeIndirectModifier ( curModifiers : caseModifiers ) )
28
+ let newCase = caseMember. withModifiers ( caseModifiers . remove ( name : " indirect " ) )
29
29
let formattedCase = formatCase ( unformattedCase: newCase,
30
30
leadingTrivia: firstModifier. leadingTrivia)
31
31
let newMember = SyntaxFactory . makeMemberDeclListItem ( decl: formattedCase, semicolon: nil )
@@ -65,28 +65,13 @@ public final class FullyIndirectEnum: SyntaxFormatRule {
65
65
for member in members {
66
66
if let caseMember = member. decl as? EnumCaseDeclSyntax {
67
67
guard let caseModifiers = caseMember. modifiers else { return false }
68
- if isIndirectCase ( modifiers : caseModifiers ) { continue }
68
+ if caseModifiers . has ( modifier : " indirect " ) { continue }
69
69
else { return false }
70
70
}
71
71
}
72
72
return true
73
73
}
74
74
75
- func isIndirectCase( modifiers: ModifierListSyntax ) -> Bool {
76
- for modifier in modifiers {
77
- if modifier. name. tokenKind == . identifier( " indirect " ) { return true }
78
- }
79
- return false
80
- }
81
-
82
- func removeIndirectModifier( curModifiers: ModifierListSyntax ) -> ModifierListSyntax {
83
- var newMods : [ DeclModifierSyntax ] = [ ]
84
- for modifier in curModifiers {
85
- if modifier. name. tokenKind != . identifier( " indirect " ) { newMods. append ( modifier) }
86
- }
87
- return SyntaxFactory . makeModifierList ( newMods)
88
- }
89
-
90
75
// Transfers given leading trivia to the first token in the case declaration
91
76
func formatCase( unformattedCase: EnumCaseDeclSyntax ,
92
77
leadingTrivia: Trivia ? ) -> EnumCaseDeclSyntax {
0 commit comments