From 32e6b4d66d96826f0ee1252f66552ba5ee2b7689 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 19 Jun 2023 10:57:36 +0200 Subject: [PATCH] CppEditor: Improve createContentProposal() - Limit iterator scope - Replace if-else chain with early continue - Save an unneeded look-up Change-Id: If90f726ddb21a516ed3d438379382a2e4cd248a9 Reviewed-by: David Schulz Reviewed-by: --- src/plugins/cppeditor/cppcompletionassist.cpp | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/plugins/cppeditor/cppcompletionassist.cpp b/src/plugins/cppeditor/cppcompletionassist.cpp index 7a886a96c0f..4865f3dfedc 100644 --- a/src/plugins/cppeditor/cppcompletionassist.cpp +++ b/src/plugins/cppeditor/cppcompletionassist.cpp @@ -37,6 +37,8 @@ #include #include +#include + using namespace CPlusPlus; using namespace CppEditor; using namespace TextEditor; @@ -847,27 +849,27 @@ bool InternalCppCompletionAssistProcessor::accepts() const IAssistProposal *InternalCppCompletionAssistProcessor::createContentProposal() { // Duplicates are kept only if they are snippets. - QSet processed; - auto it = m_completions.begin(); - while (it != m_completions.end()) { + std::set processed; + for (auto it = m_completions.begin(); it != m_completions.end();) { if ((*it)->isSnippet()) { ++it; - } else if (!processed.contains((*it)->text())) { - auto item = static_cast(*it); - processed.insert(item->text()); - if (!item->isOverloaded()) { - if (auto symbol = qvariant_cast(item->data())) { - if (Function *funTy = symbol->type()->asFunctionType()) { - if (funTy->hasArguments()) - item->markAsOverloaded(); - } - } - } - ++it; - } else { + continue; + } + if (!processed.insert((*it)->text()).second) { delete *it; it = m_completions.erase(it); + continue; } + auto item = static_cast(*it); + if (!item->isOverloaded()) { + if (auto symbol = qvariant_cast(item->data())) { + if (Function *funTy = symbol->type()->asFunctionType()) { + if (funTy->hasArguments()) + item->markAsOverloaded(); + } + } + } + ++it; } m_model->loadContent(m_completions);