From 4c8df19c8485fe8bbd40a3db4d7226cbfa91e0ed Mon Sep 17 00:00:00 2001 From: Marcelo Fabri Date: Fri, 26 Jan 2018 22:08:59 -0800 Subject: [PATCH] Use SourceKit to validate `associatedtype` and `typealias` in `type_name` rule when linting with Swift 4.1 Part of #2021 --- CHANGELOG.md | 5 +++++ .../Extensions/SwiftDeclarationKind+SwiftLint.swift | 1 + Source/SwiftLintFramework/Rules/TypeNameRule.swift | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 456903302..4f1d0365e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,11 @@ [Marcelo Fabri](https://github.com/marcelofabri) [#2021](https://github.com/realm/SwiftLint/issues/2021) +* Use SourceKit to validate `associatedtype` and `typealias` in `type_name` rule + when linting with Swift 4.1. + [Marcelo Fabri](https://github.com/marcelofabri) + [#2021](https://github.com/realm/SwiftLint/issues/2021) + ## 0.24.2: Dented Tumbler #### Breaking diff --git a/Source/SwiftLintFramework/Extensions/SwiftDeclarationKind+SwiftLint.swift b/Source/SwiftLintFramework/Extensions/SwiftDeclarationKind+SwiftLint.swift index 44964e873..32666a501 100644 --- a/Source/SwiftLintFramework/Extensions/SwiftDeclarationKind+SwiftLint.swift +++ b/Source/SwiftLintFramework/Extensions/SwiftDeclarationKind+SwiftLint.swift @@ -39,6 +39,7 @@ extension SwiftDeclarationKind { .`class`, .`struct`, .`typealias`, + .`associatedtype`, .`enum` ] diff --git a/Source/SwiftLintFramework/Rules/TypeNameRule.swift b/Source/SwiftLintFramework/Rules/TypeNameRule.swift index 5ddc5002c..00f4e5c15 100644 --- a/Source/SwiftLintFramework/Rules/TypeNameRule.swift +++ b/Source/SwiftLintFramework/Rules/TypeNameRule.swift @@ -48,6 +48,10 @@ public struct TypeNameRule: ASTRule, ConfigurationProviderRule { } private func validateTypeAliasesAndAssociatedTypes(in file: File) -> [StyleViolation] { + guard SwiftVersion.current < .fourDotOne else { + return [] + } + let rangesAndTokens = file.rangesAndTokens(matching: "(typealias|associatedtype)\\s+.+?\\b") return rangesAndTokens.flatMap { _, tokens -> [StyleViolation] in guard tokens.count == 2,