Open SimplyDanny opened 6 months ago
will work on this request
I'd really like to see this, I've provided another example below which covers:
self
Never
e.g. fatalError
import Foundation
enum SupportedFruit {
case lemon
case lime
case orange
}
enum SupportFruitError: Error {
case didYouMean(String)
}
// NON-TRIGGERING
extension SupportedFruit {
init(rawValue: String) throws {
self = switch rawValue {
case "🍋": .lemon
case "🍋🟩": .lime
case "🍊": throw SupportFruitError.didYouMean("to use an orange emoji instead of tangerine emoji")
default: fatalError()
}
}
}
// TRIGGERING
extension SupportedFruit {
init(rawValue: String) throws {
switch rawValue {
case "🍋": self = .lemon
case "🍋🟩": self = .lime
case "🍊": throw SupportFruitError.didYouMean("to use an orange emoji instead of tangerine emoji")
default: fatalError()
}
}
}
@AballahNsour I see you have a branch on your fork for starting the implementation of this rule, let me know if I can do anything to help out. My Swift Syntax skills are pretty lacking though 😢.
In version 5.9, Swift got support for
if
andswitch
expressions. A rule to enforce them where allowed should be possible.In the first implementation, the rule does not need to be configurable. It should be opt-in and might support automatic rewriting.
Triggering:
Non-triggering: