Files
SwiftLint/Source/SwiftLintFramework/Rules/DiscouragedOptionalCollectionRuleExamples.swift
T
JP Simard b83e0991b9 Remove all file headers
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.
2018-05-04 13:42:02 -07:00

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}"
}