Skip to content

Conversation

@younata
Copy link
Member

@younata younata commented Jul 29, 2023

@younata younata added this to the v13.0.0 milestone Jul 29, 2023
@younata
Copy link
Member Author

younata commented Aug 15, 2023

Now that we require Sendable closures when using async toEventually/async expressions, this presents an issue integrating with Quick.

In Quick, the common/promoted styling is to declare variables as vars in an ExampleGroup (i.e. describe, context, or even the root example group in the spec method). In Swift 5.9, when you pass a var to a sendable closure, you have to explicitly declare it. i.e.:

var subject: SomeClass!

// ...

it("does something") {
    expect { [subject] in await subject!.value }.to(...)
    // Note: In the closure, the type of `subject` is changed from a force-unwrap optional to a standard optional.
    // that is, the `!` boilerplate is now required.
}

Which is a terrible experience. It would be awfully nice if Swift would let us implicitly capture that var and pass it along.

@younata
Copy link
Member Author

younata commented Oct 14, 2024

With the merging of #1167, all of the concurrency warnings are fixed (when running on Xcode 16).

Unfortunately, this refuses to build on pre-swift-6 versions of Xcode thanks to the use of sending, and there are even broken tests to go look through.

@younata younata modified the milestones: v13.0.0, v14.0.0 Oct 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants