mirror of
https://github.com/realm/SwiftLint.git
synced 2026-06-06 20:18:40 +00:00
b83e0991b9
The MIT license doesn't require that all files be prepended with this licensing or copyright information. Realm confirmed that they're ok with this change. This will enable some companies to contribute to SwiftLint and the date & authorship information will remain accessible via git source control.
221 lines
12 KiB
Swift
221 lines
12 KiB
Swift
import Foundation
|
|
|
|
internal struct DiscouragedOptionalCollectionExamples {
|
|
|
|
static let nonTriggeringExamples = [
|
|
|
|
// Global variable
|
|
"var foo: [Int]",
|
|
"var foo: [String: Int]",
|
|
"var foo: Set<String>",
|
|
"var foo: [String: [String: Int]]",
|
|
"let foo: [Int] = []",
|
|
"let foo: [String: Int] = [:]",
|
|
"let foo: Set<String> = []",
|
|
"let foo: [String: [String: Int]] = [:]",
|
|
|
|
// Computed get variable
|
|
"var foo: [Int] { return [] }",
|
|
|
|
// Free function return
|
|
"func foo() -> [Int] {}",
|
|
"func foo() -> [String: String] {}",
|
|
"func foo() -> Set<Int> {}",
|
|
"func foo() -> ([Int]) -> String {}",
|
|
|
|
// Free function parameter
|
|
"func foo(input: [String] = []) {}",
|
|
"func foo(input: [String: String] = [:]) {}",
|
|
"func foo(input: Set<String> = []) {}",
|
|
|
|
// Method return
|
|
wrapExample("class", "func foo() -> [Int] {}"),
|
|
wrapExample("class", "func foo() -> [String: String] {}"),
|
|
wrapExample("class", "func foo() -> Set<Int> {}"),
|
|
wrapExample("class", "func foo() -> ([Int]) -> String {}"),
|
|
|
|
wrapExample("struct", "func foo() -> [Int] {}"),
|
|
wrapExample("struct", "func foo() -> [String: String] {}"),
|
|
wrapExample("struct", "func foo() -> Set<Int> {}"),
|
|
wrapExample("struct", "func foo() -> ([Int]) -> String {}"),
|
|
|
|
wrapExample("enum", "func foo() -> [Int] {}"),
|
|
wrapExample("enum", "func foo() -> [String: String] {}"),
|
|
wrapExample("enum", "func foo() -> Set<Int> {}"),
|
|
wrapExample("enum", "func foo() -> ([Int]) -> String {}"),
|
|
|
|
// Method parameter
|
|
wrapExample("class", "func foo(input: [String] = []) {}"),
|
|
wrapExample("class", "func foo(input: [String: String] = [:]) {}"),
|
|
wrapExample("class", "func foo(input: Set<String> = []) {}"),
|
|
|
|
wrapExample("struct", "func foo(input: [String] = []) {}"),
|
|
wrapExample("struct", "func foo(input: [String: String] = [:]) {}"),
|
|
wrapExample("struct", "func foo(input: Set<String> = []) {}"),
|
|
|
|
wrapExample("enum", "func foo(input: [String] = []) {}"),
|
|
wrapExample("enum", "func foo(input: [String: String] = [:]) {}"),
|
|
wrapExample("enum", "func foo(input: Set<String> = []) {}")
|
|
]
|
|
|
|
static let triggeringExamples = [
|
|
|
|
// Global variable
|
|
"↓var foo: [Int]?",
|
|
"↓var foo: [String: Int]?",
|
|
"↓var foo: Set<String>?",
|
|
"↓let foo: [Int]? = nil",
|
|
"↓let foo: [String: Int]? = nil",
|
|
"↓let foo: Set<String>? = nil",
|
|
|
|
// Computed Get Variable
|
|
"↓var foo: [Int]? { return nil }",
|
|
"↓let foo: [Int]? { return nil }()",
|
|
|
|
// Free function return
|
|
"func ↓foo() -> [T]? {}",
|
|
"func ↓foo() -> [String: String]? {}",
|
|
"func ↓foo() -> [String: [String: String]]? {}",
|
|
"func ↓foo() -> [String: [String: String]?] {}",
|
|
"func ↓foo() -> Set<Int>? {}",
|
|
"static func ↓foo() -> [T]? {}",
|
|
"static func ↓foo() -> [String: String]? {}",
|
|
"static func ↓foo() -> [String: [String: String]]? {}",
|
|
"static func ↓foo() -> [String: [String: String]?] {}",
|
|
"static func ↓foo() -> Set<Int>? {}",
|
|
"func ↓foo() -> ([Int]?) -> String {}",
|
|
"func ↓foo() -> ([Int]) -> [String]? {}",
|
|
|
|
// Free function parameter
|
|
"func foo(↓input: [String: String]?) {}",
|
|
"func foo(↓input: [String: [String: String]]?) {}",
|
|
"func foo(↓input: [String: [String: String]?]) {}",
|
|
"func foo(↓↓input: [String: [String: String]?]?) {}",
|
|
"func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]",
|
|
"func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]",
|
|
"static func foo(↓input: [String: String]?) {}",
|
|
"static func foo(↓input: [String: [String: String]]?) {}",
|
|
"static func foo(↓input: [String: [String: String]?]) {}",
|
|
"static func foo(↓↓input: [String: [String: String]?]?) {}",
|
|
"static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]",
|
|
"static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]",
|
|
|
|
// Instance variable
|
|
wrapExample("class", "↓var foo: [Int]?"),
|
|
wrapExample("class", "↓var foo: [String: Int]?"),
|
|
wrapExample("class", "↓var foo: Set<String>?"),
|
|
wrapExample("class", "↓let foo: [Int]? = nil"),
|
|
wrapExample("class", "↓let foo: [String: Int]? = nil"),
|
|
wrapExample("class", "↓let foo: Set<String>? = nil"),
|
|
|
|
wrapExample("struct", "↓var foo: [Int]?"),
|
|
wrapExample("struct", "↓var foo: [String: Int]?"),
|
|
wrapExample("struct", "↓var foo: Set<String>?"),
|
|
wrapExample("struct", "↓let foo: [Int]? = nil"),
|
|
wrapExample("struct", "↓let foo: [String: Int]? = nil"),
|
|
wrapExample("struct", "↓let foo: Set<String>? = nil"),
|
|
|
|
// Instance computed variable
|
|
wrapExample("class", "↓var foo: [Int]? { return nil }"),
|
|
wrapExample("class", "↓let foo: [Int]? { return nil }()"),
|
|
wrapExample("class", "↓var foo: Set<String>? { return nil }"),
|
|
wrapExample("class", "↓let foo: Set<String>? { return nil }()"),
|
|
|
|
wrapExample("struct", "↓var foo: [Int]? { return nil }"),
|
|
wrapExample("struct", "↓let foo: [Int]? { return nil }()"),
|
|
wrapExample("struct", "↓var foo: Set<String>? { return nil }"),
|
|
wrapExample("struct", "↓let foo: Set<String>? { return nil }()"),
|
|
|
|
wrapExample("enum", "↓var foo: [Int]? { return nil }"),
|
|
wrapExample("enum", "↓let foo: [Int]? { return nil }()"),
|
|
wrapExample("enum", "↓var foo: Set<String>? { return nil }"),
|
|
wrapExample("enum", "↓let foo: Set<String>? { return nil }()"),
|
|
|
|
// Method return
|
|
wrapExample("class", "func ↓foo() -> [T]? {}"),
|
|
wrapExample("class", "func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("class", "func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("class", "func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("class", "func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("class", "static func ↓foo() -> [T]? {}"),
|
|
wrapExample("class", "static func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("class", "static func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("class", "static func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("class", "static func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("class", "func ↓foo() -> ([Int]?) -> String {}"),
|
|
wrapExample("class", "func ↓foo() -> ([Int]) -> [String]? {}"),
|
|
|
|
wrapExample("struct", "func ↓foo() -> [T]? {}"),
|
|
wrapExample("struct", "func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("struct", "func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("struct", "func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("struct", "func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("struct", "static func ↓foo() -> [T]? {}"),
|
|
wrapExample("struct", "static func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("struct", "static func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("struct", "static func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("struct", "static func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("struct", "func ↓foo() -> ([Int]?) -> String {}"),
|
|
wrapExample("struct", "func ↓foo() -> ([Int]) -> [String]? {}"),
|
|
|
|
wrapExample("enum", "func ↓foo() -> [T]? {}"),
|
|
wrapExample("enum", "func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("enum", "func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("enum", "func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("enum", "func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("enum", "static func ↓foo() -> [T]? {}"),
|
|
wrapExample("enum", "static func ↓foo() -> [String: String]? {}"),
|
|
wrapExample("enum", "static func ↓foo() -> [String: [String: String]]? {}"),
|
|
wrapExample("enum", "static func ↓foo() -> [String: [String: String]?] {}"),
|
|
wrapExample("enum", "static func ↓foo() -> Set<Int>? {}"),
|
|
wrapExample("enum", "func ↓foo() -> ([Int]?) -> String {}"),
|
|
wrapExample("enum", "func ↓foo() -> ([Int]) -> [String]? {}"),
|
|
|
|
// Method parameter
|
|
wrapExample("class", "func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("class", "func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("class", "func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("class", "func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("class", "func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("class", "func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("class", "static func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("class", "static func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("class", "static func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("class", "static func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("class", "static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("class", "static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]"),
|
|
|
|
wrapExample("struct", "func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("struct", "func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("struct", "func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("struct", "func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("struct", "func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("struct", "func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("struct", "static func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("struct", "static func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("struct", "static func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("struct", "static func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("struct", "static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("struct", "static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]"),
|
|
|
|
wrapExample("enum", "func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("enum", "func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("enum", "func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("enum", "func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("enum", "func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("enum", "func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("enum", "static func foo(↓input: [String: String]?) {}"),
|
|
wrapExample("enum", "static func foo(↓input: [String: [String: String]]?) {}"),
|
|
wrapExample("enum", "static func foo(↓input: [String: [String: String]?]) {}"),
|
|
wrapExample("enum", "static func foo(↓↓input: [String: [String: String]?]?) {}"),
|
|
wrapExample("enum", "static func foo<K, V>(_ dict1: [K: V], ↓_ dict2: [K: V]?) -> [K: V]"),
|
|
wrapExample("enum", "static func foo<K, V>(dict1: [K: V], ↓dict2: [K: V]?) -> [K: V]")
|
|
]
|
|
}
|
|
|
|
// MARK: - Private
|
|
|
|
private func wrapExample(_ type: String, _ test: String) -> String {
|
|
return "\(type) Foo {\n\t\(test)\n}"
|
|
}
|