[Expression parser] Setting to enable use of ExternalASTMerger
This setting can be enabled like this at the target level:
(lldb) settings set target.experimental.use-modern-type-lookup true
This causes several new behaviors in the Clang expression parser:
- It completely disables use of ClangASTImporter. None are created at all, and all users of it are now conditionalized on its presence.
- It instead constructs a per-expression ExternalASTMerger, which exists inside Clang and contains much of the type completion logic that hitherto lived in ExternalASTSource, ClangExpressionDeclMap, and ClangASTImporter.
- The expression parser uses this Merger as a backend for copying and completing types.
- It also constructs a persistent ExternalASTMerger which is connected to the Target's persistent AST context.
This is a major chunk of LLDB functionality moved into Clang. It
can be tested in two ways:
- For an individual debug session, enable the setting before running a target.
- For the testsuite, change the option to be default-true. This is done in Target.cpp's g_experimental_properties. The testsuite is not yet clean with this, so I have not committed that switch.
I have filed a Bugzilla for extending the testsuite to allow
custom settings for all tests:
I have also filed a Bugzilla for fixing the remaining testsuite
failures with this setting enabled: