Commit ec463f9
authored
Disfavor overloads of
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.__checkFunctionCall() with variadic generics. (#1389)1 parent 664d24f commit ec463f9
1 file changed
+2
-0
lines changedLines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
198 | 198 | | |
199 | 199 | | |
200 | 200 | | |
| 201 | + | |
201 | 202 | | |
202 | 203 | | |
203 | 204 | | |
| |||
367 | 368 | | |
368 | 369 | | |
369 | 370 | | |
| 371 | + | |
370 | 372 | | |
371 | 373 | | |
372 | 374 | | |
| |||
0 commit comments