Do not trigger `prefer_self_in_static_references` rule on `typealias` in classes (#5012)

This commit is contained in:
Danny Mösch 2023-05-15 20:07:21 +02:00 committed by GitHub
parent 405113f793
commit c0ea9d1925
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 1 deletions

View File

@ -18,7 +18,10 @@
#### Bug Fixes
* None.
* Do not trigger `prefer_self_in_static_references` rule on `typealias`
declarations in classes.
[SimplyDanny](https://github.com/SimplyDanny)
[#5009](https://github.com/realm/SwiftLint/issues/5009)
## 0.52.2: Crisper Clearer Pleats

View File

@ -190,6 +190,13 @@ private class Visitor: ViolationsSyntaxVisitor {
}
}
override func visit(_ node: TypealiasDeclSyntax) -> SyntaxVisitorContinueKind {
if case .likeClass = parentDeclScopes.peek() {
return .skipChildren
}
return .visitChildren
}
override func visit(_ node: TypeAnnotationSyntax) -> SyntaxVisitorContinueKind {
guard case .likeStruct = parentDeclScopes.peek() else {
return .skipChildren

View File

@ -146,6 +146,7 @@ enum PreferSelfInStaticReferencesRuleExamples {
""", excludeFromDocumentation: true),
Example("""
class C {
typealias A = C
let d: C? = nil
var c: C { C() }
init() {}
@ -155,6 +156,7 @@ enum PreferSelfInStaticReferencesRuleExamples {
}
}
final class D {
typealias A = D
let c: D? = nil
var d: D { D() }
init() {}
@ -164,6 +166,7 @@ enum PreferSelfInStaticReferencesRuleExamples {
}
}
struct S {
typealias A = S
// let s: S? = nil // Struct cannot contain itself
var t: S { S() }
init() {}