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);