You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Simplify the thunk names we generate for test functions. (#750)
Parameterized test functions with the same name but different argument
types currently get the same generated names from swift-syntax, so we do
some additional decorating to ensure uniqueness. This results in very
long symbol names that `swift-demangle` has trouble with.
This PR changes the decorating formula. Previously, we would include a
copy of the test function's signature (stripped of whitespace, Unicode,
and non-identifier-friendly ASCII) and, if the identifier contained
non-ASCII characters, the CRC32 of the identifier for further
uniqueness. This change drops the copy of the identifier name and always
includes the CRC32. Collisions are only possible for fully-qualified
test function names that are _identical_, and I naïvely judge the risk
of those collisions to be sufficiently low that we can make this change.
For `ZipTests.allElementsEqual😀(i:j:)` we currently generate a thunk
named:
```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_43funcallElementsEqual__i_Int_j_Int__5bcb7b35fMu_
```
This change would change it to:
```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_9Z5bcb7b35fMu_
```
Which demangles to:
```
$s12TestingTests03ZipB0V0022allElementsEqual_oxFJo4TestfMp_9Z5bcb7b35fMu_ ---> unique name #1 of Z5bcb7b35 in peer macro @test expansion #1 of allElementsEqual😀 in TestingTests.ZipTests
```
The benefit of the change is that the generated names are shorter and
easier to read when expanding a macro, and play better with the
demangler. There may also be some benefit on Windows where the linker
has a 65KB symbol name cap, although we're not exporting these symbols
so probably not.
### 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.
0 commit comments