Skip to content

Conversation

@grynspan
Copy link
Contributor

@grynspan grynspan commented Nov 7, 2025

…#1389)

This works around rdar://122011759 which appears to have been
exacerbated by swiftlang/swift#84907.

For example:

```swift
let file = try #require(fmemopen(nil, 1, "wb+"))
```

The third parameter of `fmemopen()` is of type `const char *` (AKA
`UnsafePointer<CChar>`) and we're passing the string literal `"wb+"`
which is implicitly cast to a C string by the compiler. However,
overload resolution of the expansion function used by `#require()` is
now preferring an overload that uses variadic generics, and that
overload is impacted by a compiler issue (rdar://122011759) that causes
it to pass a garbage pointer as the temporary C string. Previously, the
type checker would pick an overload with a concrete, finite set of
generic arguments (`<T, Arg0, Arg1, Arg2, R>` instead of `<T, each U,
R>`.)

### 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.2 milestone Nov 7, 2025
@grynspan grynspan self-assigned this Nov 7, 2025
@grynspan grynspan added workaround Workaround for an issue in another component (may need to revert later) issue-handling Related to Issue handling within the testing library macros 🔭 Related to Swift macros such as @Test or #expect labels Nov 7, 2025
@grynspan
Copy link
Contributor Author

grynspan commented Nov 7, 2025

@swift-ci test

@stmontgomery
Copy link
Contributor

Looks good, but unrelatedly, I just noticed we do not yet have CI coverage for the release/6.2 branch. I'm going to try and set that up and land it before we proceed with this change, so we can attempt to have passing CI. Apologies for not realizing that in advance!

@grynspan grynspan closed this Nov 7, 2025
@grynspan grynspan deleted the jgrynspan/disfavor-variadic-generics-6.2.2 branch November 7, 2025 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

issue-handling Related to Issue handling within the testing library macros 🔭 Related to Swift macros such as @Test or #expect workaround Workaround for an issue in another component (may need to revert later)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants