Skip to content

[6.2] Add (hidden) synchronous overloads of #expect(throws:). #1179

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

grynspan
Copy link
Contributor

This PR adds overloads of the `#expect(throws:)` and `#require(throws:)`
macros that take synchronous closures. This is necessary due to a change
in the compiler in Swift 6.2 that improves type checking on closures
passed to macros. The change is a good thing, but it means that the
compiler infers the type of closures passed to these macros as `async`
even when they are synchronous and developers will now get warnings
under some circumstances.

This PR does not constitute an API change. The new overloads are
identical to their `async` peers and there is no change in the
underlying macro expansion logic at compile time or runtime. The PR
serves solely to suppress new spurious warnings that were not emitted in
Swift 6.1 or earlier.

Resolves #1177.
Resolves rdar://149299786.

### Checklist:

- [x] Code and documentation should follow the style of the [Style
Guide](https://github.com/apple/swift-testing/blob/main/Documentation/StyleGuide.md).
- [x] If public symbols are renamed or modified, DocC references should
be updated.
@grynspan grynspan added this to the Swift 6.2 milestone Jun 26, 2025
@grynspan grynspan self-assigned this Jun 26, 2025
@grynspan grynspan added the bug 🪲 Something isn't working label Jun 26, 2025
@grynspan grynspan added concurrency 🔀 Swift concurrency/sendability issues public-api Affects public API macros 🔭 Related to Swift macros such as @Test or #expect labels Jun 26, 2025
@grynspan
Copy link
Contributor Author

@swift-ci test

@grynspan grynspan added the integration ⚙️ Integrating work to release branches label Jun 26, 2025
@grynspan grynspan merged commit d72cb0a into release/6.2 Jun 26, 2025
3 checks passed
@grynspan grynspan deleted the jgrynspan/1177-add-expect-throws-sync-overloads-6.2 branch June 26, 2025 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🪲 Something isn't working concurrency 🔀 Swift concurrency/sendability issues integration ⚙️ Integrating work to release branches macros 🔭 Related to Swift macros such as @Test or #expect public-api Affects public API
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants