Prefer Self in Static References

Use Self to refer to the surrounding type name

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

Non Triggering Examples

    class C {
        static let primes = [2, 3, 5, 7]
        func isPrime(i: Int) -> Bool { Self.primes.contains(i) }
    struct T {
        static let i = 0
    }
    struct S {
        static let i = 0
    }
    extension T {
        static let j = S.i + T.i
        static let k = { T.j }()
    }
    class `Self` {
        static let i = 0
        func f() -> Int { Self.i }
    }

Triggering Examples

final class CheckCellView: NSTableCellView {
  @IBOutlet var checkButton: NSButton!

  override func awakeFromNib() {
    checkButton.action = #selector(CheckCellView.check(_:))
  }

  @objc func check(_ button: AnyObject?) {}
}
    class C {
        static let i = 1
        var j: Int {
            let ii = C.i
            return ii
        }
    }
    class C {
        func f() {
            _ = [C]()
            _ = [Int: C]()
        }
    }
    struct S {
        let j: Int
        static let i = 1
        static func f() -> Int { S.i }
        func g() -> Any { S.self }
        func h() -> S { S(j: 2) }
        func i() -> KeyPath<S, Int> { \S.j }
        func j(@Wrap(-S.i, S.i) n: Int = S.i) {}
    }
    struct S {
        struct T {
            static let i = 3
        }
        struct R {
            static let j = S.T.i
        }
        static let h = S.T.i + S.R.j
    }
    enum E {
        case A
        static func f() -> E { E.A }
        static func g() -> E { E.f() }
    }