Opaque Over Existential Parameter

Prefer opaque over existential type in function parameter

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

Non Triggering Examples

func f(_: some P) {}
func f(_: (some P)?) {}
func f(_: some P & Q) {}
func f(_: any P.Type) {}
func f(_: (any P.Type)?) {}
func f(_: borrowing any ~Copyable.Type) {}
func f(_: () -> Int = { let i: any P = p(); return i.get() }) {}
func f(_: [any P]) {}
func f(_: [any P: any Q]) {}
func f(_: () -> any P) {}

Triggering Examples

func f(_: any P) {}
func f(_: (any P)?) {}
func f(_: any P & Q) {}
func f(_: borrowing any ~Copyable) {}
func f(_: borrowing (any ~Copyable)?) {}
func f(_: (any P, any Q)) {}