Open younata opened 1 year ago
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.
This represents the work for the Nimble
13Next version.The idea is to keep this as a draft PR until it's ready. Nimble
13Next betas will source from this PR.Work for the next minor version of Nimble will continue to target main, and I'll regularly rebase this PR on top of main to keep it in sync.
Once I feel like we're ready to release this, I'll merge this PR into main.
Contents:
1067
1070
1071
1072
1130
1131
1132
1133
1141
TODO