SwiftLint
SwiftLint copied to clipboard
prefer_key_path: false error and auto correct for static members
New Issue Checklist
- [x] I've Updated SwiftLint to the latest version.
- [x] I've searched for existing GitHub issues.
Bug Description
A clear and concise description of what the bug is. Ideally, provide a small (but compilable) example code snippet that can be used to reproduce the issue.
struct MyStruct {
static var staticMember = "test"
}
let foo: [MyStruct.Type] = [MyStruct.self]
let bar = foo.map { $0.staticMember }
Mention the command or other SwiftLint integration method that caused the issue. Include stack traces or command output.
$ swiftlint lint
Produces test.swift:6:19: warning: Prefer Key Path Violation: Use a key path argument instead of a closure with property access (prefer_key_path)
$ SwiftLint lint --fix
Changes it into
struct MyStruct {
static var staticMember = "test"
}
let foo: [MyStruct.Type] = [MyStruct.self]
let bar = foo.map(\.staticMember)
Which is not valid swift code: error: key path cannot refer to static member 'staticMember'
Environment
- SwiftLint version: 0.57.0
- Xcode version: 16.0
- Installation method used: Homebrew
- Configuration file:
opt_in_rules:
- prefer_key_path
Are you using nested configurations? No
This is hopefully going to be resolved by an accepted Swift Evolution proposal.
At the moment, there is not much SwiftLint can do as it doesn't know if the element refers to a class or instance property only spotting how it is accessed.