Implicit Optional Initialization

Optionals should be consistently initialized, either with = nil or without.

  • Identifier: implicit_optional_initialization
  • Enabled by default: Yes
  • Supports autocorrection: Yes
  • Kind: style
  • Analyzer rule: No
  • Minimum Swift compiler version: 5.0.0
  • Default configuration:
    KeyValue
    severity warning
    style always

Non Triggering Examples

var foo: Int? {
  if bar != nil { }
  return 0
}
var foo: Int? = {
  if bar != nil { }
  return 0
}()
lazy var test: Int? = nil
let myVar: String? = nil
var myVar: Int? { nil }
var x: Int? = 1
//
// style: never
//

private var myVar: Int? = nil

//
// style: never
//

var myVar: Optional<Int> = nil

//
// style: never
//

var myVar: Int? { nil }, myOtherVar: Int? = nil

//
// style: never
//

var myVar: String? = nil {
  didSet { print("didSet") }
}

//
// style: never
//

func funcName() {
    var myVar: String? = nil
}

//
// style: never
//

var x: Int? = nil // comment

//
// style: always
//

public var myVar: Int?

//
// style: always
//

var myVar: Optional<Int>

//
// style: always
//

var myVar: Int? { nil }, myOtherVar: Int?

//
// style: always
//

var myVar: String? {
  didSet { print("didSet") }
}

//
// style: always
//

func funcName() {
  var myVar: String?
}

//
// style: always
//

var x: Int? // comment

Triggering Examples

//
// style: never
//

var myVar: Int? 

//
// style: never
//

var myVar: Optional<Int> 

//
// style: never
//

var myVar: Int? = nil, myOtherVar: Int? 

//
// style: never
//

var myVar: String? {
  didSet { print("didSet") }
}

//
// style: never
//

func funcName() {
  var myVar: String?
}

//
// style: always
//

var myVar: Int? = nil

//
// style: always
//

var myVar: Optional<Int> = nil

//
// style: always
//

var myVar: Int?, myOtherVar: Int? = nil

//
// style: always
//

var myVar: String? = nil {
  didSet { print("didSet") }
}

//
// style: always
//

func funcName() {
    var myVar: String? = nil
}