swift-foundation icon indicating copy to clipboard operation
swift-foundation copied to clipboard

PredicateExpressions.Equal requires Equatable conformance for comparing an optional value with "nil"

Open axelandersson opened this issue 7 months ago • 1 comments

Hello!

This case is broken out from the discussion in https://github.com/apple/swift-foundation/issues/476#issuecomment-2200614509.

Creating a predicate like:

struct Foo {
    struct Bar {
        let value = 0
    }

    let bar: Bar?
}

let predicate = #Predicate<Foo> { $0.bar == nil }

Will result in this build error:

Referencing static method 'build_Equal(lhs:rhs:)' on 'Optional' requires that 'Foo.Bar' conform to 'Equatable'

Making Foo.Bar conform to Equatable fixes this, but shouldn't be necessary. In regular Swift code an optional is always comparable with nil.

The same applies to PredicateExpressions.NotEqual, etc.

axelandersson avatar Jul 02 '24 12:07 axelandersson