Discouraged Optional Collection
Prefer empty collection over optional collection
- Identifier:
discouraged_optional_collection
- Enabled by default: No
- Supports autocorrection: No
- Kind: idiomatic
- Analyzer rule: No
- Minimum Swift compiler version: 5.0.0
- Default configuration:
Key Value severity warning
Non Triggering Examples
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]] = [:]
var foo: [Int] { return [] }
func foo() -> [Int] {}
func foo() -> [String: String] {}
func foo() -> Set<Int> {}
func foo() -> ([Int]) -> String {}
func foo(input: [String] = []) {}
func foo(input: [String: String] = [:]) {}
func foo(input: Set<String> = []) {}
class Foo {
func foo() -> [Int] {}
}
class Foo {
func foo() -> [String: String] {}
}
class Foo {
func foo() -> Set<Int> {}
}
class Foo {
func foo() -> ([Int]) -> String {}
}
struct Foo {
func foo() -> [Int] {}
}
struct Foo {
func foo() -> [String: String] {}
}
struct Foo {
func foo() -> Set<Int> {}
}
struct Foo {
func foo() -> ([Int]) -> String {}
}
enum Foo {
func foo() -> [Int] {}
}
enum Foo {
func foo() -> [String: String] {}
}
enum Foo {
func foo() -> Set<Int> {}
}
enum Foo {
func foo() -> ([Int]) -> String {}
}
class Foo {
func foo(input: [String] = []) {}
}
class Foo {
func foo(input: [String: String] = [:]) {}
}
class Foo {
func foo(input: Set<String> = []) {}
}
struct Foo {
func foo(input: [String] = []) {}
}
struct Foo {
func foo(input: [String: String] = [:]) {}
}
struct Foo {
func foo(input: Set<String> = []) {}
}
enum Foo {
func foo(input: [String] = []) {}
}
enum Foo {
func foo(input: [String: String] = [:]) {}
}
enum Foo {
func foo(input: Set<String> = []) {}
}
Triggering Examples
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
var foo: ↓[Int]? { return nil }
let foo: ↓[Int]? { return nil }()
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]? {}
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]
class Foo {
var foo: ↓[Int]?
}
class Foo {
var foo: ↓[String: Int]?
}
class Foo {
var foo: ↓Set<String>?
}
class Foo {
let foo: ↓[Int]? = nil
}
class Foo {
let foo: ↓[String: Int]? = nil
}
class Foo {
let foo: ↓Set<String>? = nil
}
struct Foo {
var foo: ↓[Int]?
}
struct Foo {
var foo: ↓[String: Int]?
}
struct Foo {
var foo: ↓Set<String>?
}
struct Foo {
let foo: ↓[Int]? = nil
}
struct Foo {
let foo: ↓[String: Int]? = nil
}
struct Foo {
let foo: ↓Set<String>? = nil
}
class Foo {
var foo: ↓[Int]? { return nil }
}
class Foo {
let foo: ↓[Int]? { return nil }()
}
class Foo {
var foo: ↓Set<String>? { return nil }
}
class Foo {
let foo: ↓Set<String>? { return nil }()
}
struct Foo {
var foo: ↓[Int]? { return nil }
}
struct Foo {
let foo: ↓[Int]? { return nil }()
}
struct Foo {
var foo: ↓Set<String>? { return nil }
}
struct Foo {
let foo: ↓Set<String>? { return nil }()
}
enum Foo {
var foo: ↓[Int]? { return nil }
}
enum Foo {
let foo: ↓[Int]? { return nil }()
}
enum Foo {
var foo: ↓Set<String>? { return nil }
}
enum Foo {
let foo: ↓Set<String>? { return nil }()
}
class Foo {
func foo() -> [T]? {}
}
class Foo {
func foo() -> ↓[String: String]? {}
}
class Foo {
func foo() -> [String: [String: String]]? {}
}
class Foo {
func foo() -> [String: ↓[String: String]?] {}
}
class Foo {
func foo() -> Set<Int>? {}
}
class Foo {
static func foo() -> [T]? {}
}
class Foo {
static func foo() -> ↓[String: String]? {}
}
class Foo {
static func foo() -> [String: [String: String]]? {}
}
class Foo {
static func foo() -> [String: ↓[String: String]?] {}
}
class Foo {
static func foo() -> Set<Int>? {}
}
class Foo {
func foo() -> ([Int]?) -> String {}
}
class Foo {
func foo() -> ([Int]) -> [String]? {}
}
struct Foo {
func foo() -> [T]? {}
}
struct Foo {
func foo() -> ↓[String: String]? {}
}
struct Foo {
func foo() -> [String: [String: String]]? {}
}
struct Foo {
func foo() -> [String: ↓[String: String]?] {}
}
struct Foo {
func foo() -> Set<Int>? {}
}
struct Foo {
static func foo() -> [T]? {}
}
struct Foo {
static func foo() -> ↓[String: String]? {}
}
struct Foo {
static func foo() -> [String: [String: String]]? {}
}
struct Foo {
static func foo() -> [String: ↓[String: String]?] {}
}
struct Foo {
static func foo() -> Set<Int>? {}
}
struct Foo {
func foo() -> ([Int]?) -> String {}
}
struct Foo {
func foo() -> ([Int]) -> [String]? {}
}
enum Foo {
func foo() -> [T]? {}
}
enum Foo {
func foo() -> ↓[String: String]? {}
}
enum Foo {
func foo() -> [String: [String: String]]? {}
}
enum Foo {
func foo() -> [String: ↓[String: String]?] {}
}
enum Foo {
func foo() -> Set<Int>? {}
}
enum Foo {
static func foo() -> [T]? {}
}
enum Foo {
static func foo() -> ↓[String: String]? {}
}
enum Foo {
static func foo() -> [String: [String: String]]? {}
}
enum Foo {
static func foo() -> [String: ↓[String: String]?] {}
}
enum Foo {
static func foo() -> Set<Int>? {}
}
enum Foo {
func foo() -> ([Int]?) -> String {}
}
enum Foo {
func foo() -> ([Int]) -> [String]? {}
}
class Foo {
func foo(input: ↓[String: String]?) {}
}
class Foo {
func foo(input: ↓[String: [String: String]]?) {}
}
class Foo {
func foo(input: [String: ↓[String: String]?]) {}
}
class Foo {
func foo(input: ↓[String: ↓[String: String]?]?) {}
}
class Foo {
func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
class Foo {
func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}
class Foo {
static func foo(input: ↓[String: String]?) {}
}
class Foo {
static func foo(input: ↓[String: [String: String]]?) {}
}
class Foo {
static func foo(input: [String: ↓[String: String]?]) {}
}
class Foo {
static func foo(input: ↓[String: ↓[String: String]?]?) {}
}
class Foo {
static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
class Foo {
static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}
struct Foo {
func foo(input: ↓[String: String]?) {}
}
struct Foo {
func foo(input: ↓[String: [String: String]]?) {}
}
struct Foo {
func foo(input: [String: ↓[String: String]?]) {}
}
struct Foo {
func foo(input: ↓[String: ↓[String: String]?]?) {}
}
struct Foo {
func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
struct Foo {
func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}
struct Foo {
static func foo(input: ↓[String: String]?) {}
}
struct Foo {
static func foo(input: ↓[String: [String: String]]?) {}
}
struct Foo {
static func foo(input: [String: ↓[String: String]?]) {}
}
struct Foo {
static func foo(input: ↓[String: ↓[String: String]?]?) {}
}
struct Foo {
static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
struct Foo {
static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}
enum Foo {
func foo(input: ↓[String: String]?) {}
}
enum Foo {
func foo(input: ↓[String: [String: String]]?) {}
}
enum Foo {
func foo(input: [String: ↓[String: String]?]) {}
}
enum Foo {
func foo(input: ↓[String: ↓[String: String]?]?) {}
}
enum Foo {
func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
enum Foo {
func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}
enum Foo {
static func foo(input: ↓[String: String]?) {}
}
enum Foo {
static func foo(input: ↓[String: [String: String]]?) {}
}
enum Foo {
static func foo(input: [String: ↓[String: String]?]) {}
}
enum Foo {
static func foo(input: ↓[String: ↓[String: String]?]?) {}
}
enum Foo {
static func foo<K, V>(_ dict1: [K: V], _ dict2: ↓[K: V]?) -> [K: V]
}
enum Foo {
static func foo<K, V>(dict1: [K: V], dict2: ↓[K: V]?) -> [K: V]
}