Quick / Nimble

A Matcher Framework for Swift and Objective-C
https://quick.github.io/Nimble/documentation/nimble/
Apache License 2.0
4.8k stars 601 forks source link

Enable concurrency checking #1040

Closed younata closed 1 year ago

younata commented 1 year ago

This will be a long-term project, and is one of the goals of Nimble 13. This branch is intended to be a long-running branch.

Most of this work is "$SOME_CLASS needs to conform to Sendable".

As CI indicates, this breaks the async version of waitUntil. This work will require a re-examining of how waitUntil and the toEventually methods work in async contexts.

There are also a number of issues in Apple APIs that also block this.

Apple API issues:

Some of these can be solved by adding an extension to the relevant API and making it conform to Sendable. I am strongly against shipping that, as it could cause issues with other libraries that do the same. Similarly, I am against adding the @preconcurrency tag to the relevant import statements to fix those warnings.