@@ -12,62 +12,51 @@ import SwiftSyntax
1212///
1313/// - SeeAlso: https://google.github.io/swift#static-and-class-properties
1414public final class DontRepeatTypeInStaticProperties : SyntaxLintRule {
15-
15+
1616 public override func visit( _ node: ClassDeclSyntax ) {
1717 determinePropertyNameViolations ( members: node. members. members, nodeId: node. identifier. text)
1818 }
19-
19+
2020 public override func visit( _ node: EnumDeclSyntax ) {
2121 determinePropertyNameViolations ( members: node. members. members, nodeId: node. identifier. text)
2222 }
23-
23+
2424 public override func visit( _ node: ProtocolDeclSyntax ) {
2525 determinePropertyNameViolations ( members: node. members. members, nodeId: node. identifier. text)
2626 }
27-
27+
2828 public override func visit( _ node: StructDeclSyntax ) {
2929 determinePropertyNameViolations ( members: node. members. members, nodeId: node. identifier. text)
3030 }
31-
31+
3232 public override func visit( _ node: ExtensionDeclSyntax ) {
33- determinePropertyNameViolations ( members: node. members. members, nodeId: node. extendedType. description)
33+ determinePropertyNameViolations ( members: node. members. members,
34+ nodeId: node. extendedType. description)
3435 }
3536
3637 func determinePropertyNameViolations( members: MemberDeclListSyntax , nodeId: String ) {
3738 for member in members {
3839 guard let decl = member. decl as? VariableDeclSyntax else { continue }
3940 guard let modifiers = decl. modifiers else { continue }
40- guard containsClassOrStatic ( modifiers: modifiers) else { continue }
41-
41+ guard modifiers. has ( modifier : " static " ) || modifiers. has ( modifier : " class " ) else { continue }
42+
4243 let typeName = withoutPrefix ( name: nodeId)
43- var varName = " "
44-
45- for binding in decl. bindings {
46- guard let exp = binding. pattern as? IdentifierPatternSyntax else { continue }
47- varName = exp. identifier. text
48- }
49-
50- if varName. contains ( typeName) {
44+
45+ for id in decl. identifiers {
46+ let varName = id. identifier. text
47+ guard varName. contains ( typeName) else { continue }
5148 diagnose ( . removeTypeFromName( name: varName, type: typeName) , on: decl)
5249 }
5350 }
5451 }
5552
56- func containsClassOrStatic( modifiers: ModifierListSyntax ) -> Bool {
57- for modifier in modifiers {
58- let name = modifier. name. text
59- if name == " class " || name == " static " { return true }
60- }
61- return false
62- }
63-
6453 // Returns the given string without capitalized prefix in the beginning
6554 func withoutPrefix( name: String ) -> String {
6655 let formattedName = name. trimmingCharacters ( in: CharacterSet . whitespaces)
6756 let upperCase = Array ( formattedName. uppercased ( ) )
6857 let original = Array ( formattedName)
6958 guard original [ 0 ] == upperCase [ 0 ] else { return name }
70-
59+
7160 var prefixEndsAt = 0
7261 var idx = 0
7362 while idx <= name. count - 2 {
@@ -83,6 +72,6 @@ public final class DontRepeatTypeInStaticProperties: SyntaxLintRule {
8372
8473extension Diagnostic . Message {
8574 static func removeTypeFromName( name: String , type: String ) -> Diagnostic . Message {
86- return . init( . warning, " Remove '\( type) ' from ' \( name) ' " )
75+ return . init( . warning, " remove '\( type) ' from ' \( name) ' " )
8776 }
8877}
0 commit comments