lit.py currently allows any substring of `target_triple` to be used as a
feature in REQUIRES/UNSUPPORTED/XFAIL. This results in various forms of
the OS spread across the tests and is also somewhat confusing since they
aren't actually listed in the available features.
Modify all OS-related features to use the `OS=` version that Swift adds
instead. We can later remove `config.target_triple` so that these don't
the non-OS versions don't work in the first place.
Sadly, in Windows, the last invocation of the test, which mixes
`emit-loaded-module-trace` and the two frontend invocations, fails with
the compiler crashing. Instead of this being reported correctly thru
lit, it crashes the lit driver and the test is not even marked as
failed. When running several tests in parallel, it crashes one of the
workers and outputs a cryptic "Error 87".
Sadly, because of how the test seems to break, and how Windows seems to
fail, XFAILing the test is not enough, and it has to be skipped
completely in Windows and have to be mark as unsupported instead.
Hopefully this will unstuck the Windows CI machines.
✔ More informative error messages in case of crashes.
✔ Handling and documenting different cases.
✔ Test cases for different cases.
✔ Make SDKDependencies.swift pass again.
Pending: support for tracking depedencies through -import-underlying-module
and -import-objc-header.
Fixes rdar://problem/51825495 and rdar://problem/51825644.