diff --git a/src/plugins/qmljstools/qmljsfunctionfilter.cpp b/src/plugins/qmljstools/qmljsfunctionfilter.cpp index 4df32ffc8d4..adb79d6efdd 100644 --- a/src/plugins/qmljstools/qmljsfunctionfilter.cpp +++ b/src/plugins/qmljstools/qmljsfunctionfilter.cpp @@ -32,6 +32,8 @@ #include +#include + using namespace QmlJSTools::Internal; Q_DECLARE_METATYPE(LocatorData::Entry) @@ -56,14 +58,13 @@ QList FunctionFilter::matchesFor( QFutureInterface &future, const QString &entry) { - QList goodEntries; - QList betterEntries; - QList bestEntries; + enum { Best = 0, Better, Good, EntryNumber }; + QList entries[EntryNumber]; const Qt::CaseSensitivity caseSensitivityForPrefix = caseSensitivity(entry); const QRegularExpression regexp = createRegExp(entry); if (!regexp.isValid()) - return goodEntries; + return {}; const QHash > entries = m_data->entries(); for (const QList &items : entries) { @@ -82,25 +83,21 @@ QList FunctionFilter::matchesFor( filterEntry.highlightInfo = highlightInfo(match); if (filterEntry.displayName.startsWith(entry, caseSensitivityForPrefix)) - bestEntries.append(filterEntry); + entries[Best].append(filterEntry); else if (filterEntry.displayName.contains(entry, caseSensitivityForPrefix)) - betterEntries.append(filterEntry); + entries[Better].append(filterEntry); else - goodEntries.append(filterEntry); + entries[Good].append(filterEntry); } } } - if (goodEntries.size() < 1000) - Utils::sort(goodEntries, Core::LocatorFilterEntry::compareLexigraphically); - if (betterEntries.size() < 1000) - Utils::sort(betterEntries, Core::LocatorFilterEntry::compareLexigraphically); - if (bestEntries.size() < 1000) - Utils::sort(bestEntries, Core::LocatorFilterEntry::compareLexigraphically); + for (auto &entry : entries) { + if (entry.size() < 1000) + Utils::sort(entry, Core::LocatorFilterEntry::compareLexigraphically); + } - bestEntries += betterEntries; - bestEntries += goodEntries; - return bestEntries; + return std::accumulate(std::begin(entries), std::end(entries), QList()); } void FunctionFilter::accept(Core::LocatorFilterEntry selection,