[lldb] Use one Progress event per root module build
Following the work done by @jdevlieghere in D143690, this changes how Clang module build events are emitted. Instead of one Progress event per module being built, a single Progress event is used to encompass all modules, and each module build is sent as an `Increment` update. Differential Revision: https://reviews.llvm.org/D147248
This commit is contained in:
parent
c8522cadf7
commit
7edff3c1b2
@ -68,7 +68,7 @@ public:
|
||||
|
||||
private:
|
||||
bool HandleModuleRemark(const clang::Diagnostic &info);
|
||||
void SetCurrentModuleProgress(llvm::StringRef module_name);
|
||||
void SetCurrentModuleProgress(std::string module_name);
|
||||
|
||||
typedef std::pair<clang::DiagnosticsEngine::Level, std::string>
|
||||
IDAndDiagnostic;
|
||||
@ -208,8 +208,9 @@ bool StoringDiagnosticConsumer::HandleModuleRemark(
|
||||
if (m_module_build_stack.empty()) {
|
||||
m_current_progress_up = nullptr;
|
||||
} else {
|
||||
// Update the progress to re-show the module that was currently being
|
||||
// built from the time the now completed module was originally began.
|
||||
// When the just completed module began building, a module that depends on
|
||||
// it ("module A") was effectively paused. Update the progress to re-show
|
||||
// "module A" as continuing to be built.
|
||||
const auto &resumed_module_name = m_module_build_stack.back();
|
||||
SetCurrentModuleProgress(resumed_module_name);
|
||||
}
|
||||
@ -224,13 +225,12 @@ bool StoringDiagnosticConsumer::HandleModuleRemark(
|
||||
}
|
||||
|
||||
void StoringDiagnosticConsumer::SetCurrentModuleProgress(
|
||||
llvm::StringRef module_name) {
|
||||
// Ensure the ordering of:
|
||||
// 1. Completing the existing progress event.
|
||||
// 2. Beginining a new progress event.
|
||||
m_current_progress_up = nullptr;
|
||||
m_current_progress_up = std::make_unique<Progress>(
|
||||
llvm::formatv("Currently building module {0}", module_name));
|
||||
std::string module_name) {
|
||||
if (!m_current_progress_up)
|
||||
m_current_progress_up =
|
||||
std::make_unique<Progress>("Building Clang modules");
|
||||
|
||||
m_current_progress_up->Increment(1, std::move(module_name));
|
||||
}
|
||||
|
||||
ClangModulesDeclVendor::ClangModulesDeclVendor()
|
||||
|
@ -43,4 +43,4 @@ class TestCase(TestBase):
|
||||
event = lldbutil.fetch_next_event(self, listener, broadcaster)
|
||||
payload = lldb.SBDebugger.GetProgressFromEvent(event)
|
||||
message = payload[0]
|
||||
self.assertEqual(message, "Currently building module MyModule")
|
||||
self.assertEqual(message, "Building Clang modules")
|
||||
|
Loading…
x
Reference in New Issue
Block a user