SwiftLint/Source/SwiftLintBuiltInRules/Rules/Idiomatic/DiscouragedOptionalBooleanR...

169 lines
7.7 KiB
Swift

internal struct DiscouragedOptionalBooleanRuleExamples {
static let nonTriggeringExamples = [
// Global variable
Example("var foo: Bool"),
Example("var foo: [String: Bool]"),
Example("var foo: [Bool]"),
Example("let foo: Bool = true"),
Example("let foo: Bool = false"),
Example("let foo: [String: Bool] = [:]"),
Example("let foo: [Bool] = []"),
// Computed get variable
Example("var foo: Bool { return true }"),
Example("let foo: Bool { return false }()"),
// Free function return
Example("func foo() -> Bool {}"),
Example("func foo() -> [String: Bool] {}"),
Example("func foo() -> ([Bool]) -> String {}"),
// Free function parameter
Example("func foo(input: Bool = true) {}"),
Example("func foo(input: [String: Bool] = [:]) {}"),
Example("func foo(input: [Bool] = []) {}"),
// Method return
wrapExample("class", "func foo() -> Bool {}"),
wrapExample("class", "func foo() -> [String: Bool] {}"),
wrapExample("class", "func foo() -> ([Bool]) -> String {}"),
wrapExample("struct", "func foo() -> Bool {}"),
wrapExample("struct", "func foo() -> [String: Bool] {}"),
wrapExample("struct", "func foo() -> ([Bool]) -> String {}"),
wrapExample("enum", "func foo() -> Bool {}"),
wrapExample("enum", "func foo() -> [String: Bool] {}"),
wrapExample("enum", "func foo() -> ([Bool]) -> String {}"),
// Method parameter
wrapExample("class", "func foo(input: Bool = true) {}"),
wrapExample("class", "func foo(input: [String: Bool] = [:]) {}"),
wrapExample("class", "func foo(input: [Bool] = []) {}"),
wrapExample("struct", "func foo(input: Bool = true) {}"),
wrapExample("struct", "func foo(input: [String: Bool] = [:]) {}"),
wrapExample("struct", "func foo(input: [Bool] = []) {}"),
wrapExample("enum", "func foo(input: Bool = true) {}"),
wrapExample("enum", "func foo(input: [String: Bool] = [:]) {}"),
wrapExample("enum", "func foo(input: [Bool] = []) {}")
]
static let triggeringExamples = [
// Global variable
Example("var foo: ↓Bool?"),
Example("var foo: [String: ↓Bool?]"),
Example("var foo: [↓Bool?]"),
Example("let foo: ↓Bool? = nil"),
Example("let foo: [String: ↓Bool?] = [:]"),
Example("let foo: [↓Bool?] = []"),
Example("let foo = ↓Optional.some(false)"),
Example("let foo = ↓Optional.some(true)"),
// Computed Get Variable
Example("var foo: ↓Bool? { return nil }"),
Example("let foo: ↓Bool? { return nil }()"),
// Free function return
Example("func foo() -> ↓Bool? {}"),
Example("func foo() -> [String: ↓Bool?] {}"),
Example("func foo() -> [↓Bool?] {}"),
Example("static func foo() -> ↓Bool? {}"),
Example("static func foo() -> [String: ↓Bool?] {}"),
Example("static func foo() -> [↓Bool?] {}"),
Example("func foo() -> (↓Bool?) -> String {}"),
Example("func foo() -> ([Int]) -> ↓Bool? {}"),
// Free function parameter
Example("func foo(input: ↓Bool?) {}"),
Example("func foo(input: [String: ↓Bool?]) {}"),
Example("func foo(input: [↓Bool?]) {}"),
Example("static func foo(input: ↓Bool?) {}"),
Example("static func foo(input: [String: ↓Bool?]) {}"),
Example("static func foo(input: [↓Bool?]) {}"),
// Instance variable
wrapExample("class", "var foo: ↓Bool?"),
wrapExample("class", "var foo: [String: ↓Bool?]"),
wrapExample("class", "let foo: ↓Bool? = nil"),
wrapExample("class", "let foo: [String: ↓Bool?] = [:]"),
wrapExample("class", "let foo: [↓Bool?] = []"),
wrapExample("struct", "var foo: ↓Bool?"),
wrapExample("struct", "var foo: [String: ↓Bool?]"),
wrapExample("struct", "let foo: ↓Bool? = nil"),
wrapExample("struct", "let foo: [String: ↓Bool?] = [:]"),
wrapExample("struct", "let foo: [↓Bool?] = []"),
// Instance computed variable
wrapExample("class", "var foo: ↓Bool? { return nil }"),
wrapExample("class", "let foo: ↓Bool? { return nil }()"),
wrapExample("struct", "var foo: ↓Bool? { return nil }"),
wrapExample("struct", "let foo: ↓Bool? { return nil }()"),
wrapExample("enum", "var foo: ↓Bool? { return nil }"),
wrapExample("enum", "let foo: ↓Bool? { return nil }()"),
// Method return
wrapExample("class", "func foo() -> ↓Bool? {}"),
wrapExample("class", "func foo() -> [String: ↓Bool?] {}"),
wrapExample("class", "func foo() -> [↓Bool?] {}"),
wrapExample("class", "static func foo() -> ↓Bool? {}"),
wrapExample("class", "static func foo() -> [String: ↓Bool?] {}"),
wrapExample("class", "static func foo() -> [↓Bool?] {}"),
wrapExample("class", "func foo() -> (↓Bool?) -> String {}"),
wrapExample("class", "func foo() -> ([Int]) -> ↓Bool? {}"),
wrapExample("struct", "func foo() -> ↓Bool? {}"),
wrapExample("struct", "func foo() -> [String: ↓Bool?] {}"),
wrapExample("struct", "func foo() -> [↓Bool?] {}"),
wrapExample("struct", "static func foo() -> ↓Bool? {}"),
wrapExample("struct", "static func foo() -> [String: ↓Bool?] {}"),
wrapExample("struct", "static func foo() -> [↓Bool?] {}"),
wrapExample("struct", "func foo() -> (↓Bool?) -> String {}"),
wrapExample("struct", "func foo() -> ([Int]) -> ↓Bool? {}"),
wrapExample("enum", "func foo() -> ↓Bool? {}"),
wrapExample("enum", "func foo() -> [String: ↓Bool?] {}"),
wrapExample("enum", "func foo() -> [↓Bool?] {}"),
wrapExample("enum", "static func foo() -> ↓Bool? {}"),
wrapExample("enum", "static func foo() -> [String: ↓Bool?] {}"),
wrapExample("enum", "static func foo() -> [↓Bool?] {}"),
wrapExample("enum", "func foo() -> (↓Bool?) -> String {}"),
wrapExample("enum", "func foo() -> ([Int]) -> ↓Bool? {}"),
// Method parameter
wrapExample("class", "func foo(input: ↓Bool?) {}"),
wrapExample("class", "func foo(input: [String: ↓Bool?]) {}"),
wrapExample("class", "func foo(input: [↓Bool?]) {}"),
wrapExample("class", "static func foo(input: ↓Bool?) {}"),
wrapExample("class", "static func foo(input: [String: ↓Bool?]) {}"),
wrapExample("class", "static func foo(input: [↓Bool?]) {}"),
wrapExample("struct", "func foo(input: ↓Bool?) {}"),
wrapExample("struct", "func foo(input: [String: ↓Bool?]) {}"),
wrapExample("struct", "func foo(input: [↓Bool?]) {}"),
wrapExample("struct", "static func foo(input: ↓Bool?) {}"),
wrapExample("struct", "static func foo(input: [String: ↓Bool?]) {}"),
wrapExample("struct", "static func foo(input: [↓Bool?]) {}"),
wrapExample("enum", "func foo(input: ↓Bool?) {}"),
wrapExample("enum", "func foo(input: [String: ↓Bool?]) {}"),
wrapExample("enum", "func foo(input: [↓Bool?]) {}"),
wrapExample("enum", "static func foo(input: ↓Bool?) {}"),
wrapExample("enum", "static func foo(input: [String: ↓Bool?]) {}"),
wrapExample("enum", "static func foo(input: [↓Bool?]) {}"),
// Optional chaining
Example("_ = ↓Bool?.values()")
]
}
// MARK: - Private
private func wrapExample(_ type: String, _ test: String, file: StaticString = #file, line: UInt = #line) -> Example {
return Example("\(type) Foo {\n\t\(test)\n}", file: file, line: line)
}