Skip to content

Commit

Permalink
Perform violation collection at one place (#5383)
Browse files Browse the repository at this point in the history
  • Loading branch information
SimplyDanny authored Dec 10, 2023
1 parent 078d333 commit 7c59300
Showing 1 changed file with 11 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,51 +35,35 @@ private extension ExplicitTopLevelACLRule {
override var skippableDeclarations: [any DeclSyntaxProtocol.Type] { .all }

override func visitPost(_ node: ClassDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.classKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.classKeyword)
}

override func visitPost(_ node: StructDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.structKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.structKeyword)
}

override func visitPost(_ node: EnumDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.enumKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.enumKeyword)
}

override func visitPost(_ node: ProtocolDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.protocolKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.protocolKeyword)
}

override func visitPost(_ node: ActorDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.actorKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.actorKeyword)
}

override func visitPost(_ node: TypeAliasDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.typealiasKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.typealiasKeyword)
}

override func visitPost(_ node: FunctionDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.funcKeyword.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.funcKeyword)
}

override func visitPost(_ node: VariableDeclSyntax) {
if hasViolation(modifiers: node.modifiers) {
violations.append(node.bindingSpecifier.positionAfterSkippingLeadingTrivia)
}
collectViolations(decl: node, token: node.bindingSpecifier)
}

override func visit(_ node: CodeBlockSyntax) -> SyntaxVisitorContinueKind {
Expand All @@ -90,11 +74,10 @@ private extension ExplicitTopLevelACLRule {
.skipChildren
}

private func hasViolation(modifiers: DeclModifierListSyntax?) -> Bool {
guard let modifiers else {
return true
private func collectViolations(decl: some WithModifiersSyntax, token: TokenSyntax) {
if decl.modifiers.accessLevelModifier == nil {
violations.append(token.positionAfterSkippingLeadingTrivia)
}
return !modifiers.contains { $0.asAccessLevelModifier != nil && $0.detail == nil }
}
}
}

0 comments on commit 7c59300

Please sign in to comment.