The checkout configs included some old dated branches that are no longer
used. They are unlikely to work well anyway because the corresponding
Clang/LLVM branches moved forward independently. Remove those config entries.
Also re-order the 4.0 and 4.1 configs to be consistent.
This change increases test coverage of lldb in its cmake configuration
by ensuring that its unit tests are built and ready to run. There is
similar logic to build the unit tests for the xcodebuild configuration.
The recommended way forward is to use the SyntaxClassifier on the Swift
side.
By removing the C++ SyntaxClassifier, we can also eliminate the
-force-libsyntax-based-processing option that was used to bootstrap
incremental parsing and would generate the syntax map from a syntax
tree.
This makes update_checkout into a true python module that we can add nosetests
for, readme, and also split up without issue into multiple small files.
I also added a small stub test directory and support for running tests for
update_checkout during validation-testing. So once we add some tests, everything
is setup correctly in terms of the swift build for testing purposes.
As Swift 4.2 winds down, we're due to move to a newer version of LLVM.
The swift-5.0-branch in swift-llvm, swift-clang, and swift-compiler-rt
has been updated with content from upstream-with-swift as of last week,
and we're planning to adopt this as our next "stable" branch of LLVM
(forum announcement should be going out soon). There are still some
issues that we need to work through, so to help test that, we're going
to temporarily use the master-next bots to build with those branches.
We'll switch back to testing against upstream-with-swift after we're
done with the transition.
For now, the accessors have been underscored as `_read` and `_modify`.
I'll prepare an evolution proposal for this feature which should allow
us to remove the underscores or, y'know, rename them to `purple` and
`lettuce`.
`_read` accessors do not make any effort yet to avoid copying the
value being yielded. I'll work on it in follow-up patches.
Opaque accesses to properties and subscripts defined with `_modify`
accessors will use an inefficient `materializeForSet` pattern that
materializes the value to a temporary instead of accessing it in-place.
That will be fixed by migrating to `modify` over `materializeForSet`,
which is next up after the `read` optimizations.
SIL ownership verification doesn't pass yet for the test cases here
because of a general fault in SILGen where borrows can outlive their
borrowed value due to being cleaned up on the general cleanup stack
when the borrowed value is cleaned up on the formal-access stack.
Michael, Andy, and I discussed various ways to fix this, but it seems
clear to me that it's not in any way specific to coroutine accesses.
rdar://35399664