Update the lexing implementation to defer to the
regex library, which will pass back the pointer
from to resume lexing, and update the emission to
call the new `Regex(_regexString:version:)`
overload, that will accept the regex string with
delimiters.
Because this uses the library's lexing
implementation, the delimiters are now `'/.../'`
and `'|...|'` instead of plain `'...'`.
- Checkout apple/swift-experimental-string-processing using a tag.
- Build `_MatchingEngine` as part of libswift (`ExperimentalRegex`) using sources from the package.
- Parse regex literals using the parser from `_MatchingEngine`.
- Build both `_MatchingEngine` and `_StringProcessing` as part of core libs using sources from the package.
- Use `Regex<DynamicCaptures>` as the default regex type until we finalize apple/swift-experimental-string-processing#68.
Otherwise, the error message gets printed as a Python binary string, e.g. you see
```
b'error: Your local changes to the following files would be overwritten by checkout:\n\tinclude/swift/IDE/CodeCompletion.h\n\tutils/update_checkout/update_checkout/update_checkout.py\nPlease commit your changes or stash them before you switch branches.\nAborting\n'
```
instead of
```
error: Your local changes to the following files would be overwritten by checkout:
include/swift/IDE/CodeCompletion.h
utils/update_checkout/update_checkout/update_checkout.py
Please commit your changes or stash them before you switch branches.
Aborting
```
If 'call_quietly' fails, there is no indication as to what the failure
was, except for the exit/status code from the subprocess. This adds a
new exception type that will print out stdout/stderr from the subprocess
In addition to following current best practices for inclusive terms,
this also fixes an issue that occurs if a user has customized their
local git config to use an alternate default branch name (using
'init.defaultBranch').
If a user has set 'init.defaultBranch' in their git config to anything
other than master, the update_checkout tests fail. By setting the
sybolic-ref for HEAD after initializing the bare repo, the user's
setting will not affect the test.
This changes the shebangs for the update_checkout executable files to
specifically call Python 3. The code is already compatible and
functional with python3, so this removes any implied backward
compatibility, and removes any ambiguity based on the user's current
environment, especially since some systems, like macOS, still link
'python' to Python 2.
This also removes the now unnecessary 'from __future__' imports.
This is not touching the minimum yet since we need to do a bit more work over
the next couple of weeks to get the bots ready on macOS for the newer cmake.
Windows bots already support the newer cmake.
https://forums.swift.org/t/bump-cmake-version-to-3-18/45033/10