diff --git a/src/app/main.cpp b/src/app/main.cpp index 5ebb3ff4d70..86c9106a565 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -91,8 +91,6 @@ const char PLUGINPATH_OPTION[] = "-pluginpath"; const char LANGUAGE_OPTION[] = "-language"; const char USER_LIBRARY_PATH_OPTION[] = "-user-library-path"; // hidden option for qtcreator.sh -using PluginSpecSet = QVector; - // Helpers for displaying messages. Note that there is no console on Windows. // Format as
 HTML
@@ -795,7 +793,7 @@ int main(int argc, char **argv)
             settingspath};
     PluginManager::setCreatorProcessData(processData);
 
-    const PluginSpecSet plugins = PluginManager::plugins();
+    const PluginSpecs plugins = PluginManager::plugins();
     PluginSpec *coreplugin = nullptr;
     for (PluginSpec *spec : plugins) {
         if (spec->name() == QLatin1String(corePluginNameC)) {
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp
index 718a66a7275..f0c7e930b48 100644
--- a/src/libs/extensionsystem/pluginmanager.cpp
+++ b/src/libs/extensionsystem/pluginmanager.cpp
@@ -50,6 +50,7 @@
 
 #include 
 #include 
+#include 
 
 Q_LOGGING_CATEGORY(pluginLog, "qtc.extensionsystem", QtWarningMsg)
 
@@ -327,7 +328,7 @@ void PluginManager::loadPluginsAtRuntime(const QSet &plugins)
     d->loadPluginsAtRuntime(plugins);
 }
 
-void PluginManager::addPlugins(const QVector &specs)
+void PluginManager::addPlugins(const PluginSpecs &specs)
 {
     d->addPlugins(specs);
 }
@@ -556,12 +557,12 @@ QStringList PluginManager::argumentsForRestart()
 
     \sa setPluginPaths()
 */
-const QVector PluginManager::plugins()
+const PluginSpecs PluginManager::plugins()
 {
     return d->pluginSpecs;
 }
 
-QHash> PluginManager::pluginCollections()
+QHash PluginManager::pluginCollections()
 {
     return d->pluginCategories;
 }
@@ -903,8 +904,10 @@ PluginManager::ProcessData PluginManager::creatorProcessData()
 /*!
     Returns a list of plugins in load order.
 */
-QVector PluginManager::loadQueue()
+PluginSpecs PluginManager::loadQueue()
 {
+    // Ensure order preservation
+    static_assert(std::is_same >::value);
     return d->loadQueue();
 }
 
@@ -1034,7 +1037,7 @@ void PluginManagerPrivate::stopAll()
     m_isShuttingDown = true;
     delayedInitializeTimer.stop();
 
-    const QVector queue = loadQueue();
+    const PluginSpecs queue = loadQueue();
     for (PluginSpec *spec : queue)
         loadPlugin(spec, PluginSpec::Stopped);
 }
@@ -1371,7 +1374,7 @@ void PluginManagerPrivate::loadPlugins()
     if (m_profilingVerbosity > 0)
         qDebug("Profiling started");
 
-    const QVector queue = loadQueue();
+    const PluginSpecs queue = loadQueue();
     Utils::setMimeStartupPhase(MimeStartupPhase::PluginsLoading);
     {
         NANOTRACE_SCOPE("ExtensionSystem", "Load");
@@ -1477,11 +1480,11 @@ void PluginManagerPrivate::shutdown()
 /*!
     \internal
 */
-const QVector PluginManagerPrivate::loadQueue()
+const PluginSpecs PluginManagerPrivate::loadQueue()
 {
-    QVector queue;
+    PluginSpecs queue;
     for (PluginSpec *spec : std::as_const(pluginSpecs)) {
-        QVector circularityCheckQueue;
+        PluginSpecs circularityCheckQueue;
         loadQueue(spec, queue, circularityCheckQueue);
     }
     return queue;
@@ -1491,8 +1494,8 @@ const QVector PluginManagerPrivate::loadQueue()
     \internal
 */
 bool PluginManagerPrivate::loadQueue(PluginSpec *spec,
-                                     QVector &queue,
-                                     QVector &circularityCheckQueue)
+                                     PluginSpecs &queue,
+                                     PluginSpecs &circularityCheckQueue)
 {
     if (queue.contains(spec))
         return true;
@@ -1757,7 +1760,7 @@ static const FilePaths pluginFiles(const FilePaths &pluginPaths)
     return pluginFiles;
 }
 
-void PluginManagerPrivate::addPlugins(const QVector &specs)
+void PluginManagerPrivate::addPlugins(const PluginSpecs &specs)
 {
     pluginSpecs += specs;
 
@@ -1791,7 +1794,7 @@ void PluginManagerPrivate::addPlugins(const QVector &specs)
 */
 void PluginManagerPrivate::readPluginPaths()
 {
-    QVector newSpecs;
+    PluginSpecs newSpecs;
 
     // from the file system
     for (const FilePath &pluginFile : pluginFiles(pluginPaths)) {
@@ -1826,7 +1829,7 @@ void PluginManagerPrivate::enableDependenciesIndirectly()
     for (PluginSpec *spec : std::as_const(pluginSpecs))
         spec->setEnabledIndirectly(false);
     // cannot use reverse loadQueue here, because test dependencies can introduce circles
-    QVector queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled);
+    PluginSpecs queue = Utils::filtered(pluginSpecs, &PluginSpec::isEffectivelyEnabled);
     while (!queue.isEmpty()) {
         PluginSpec *spec = queue.takeFirst();
         queue += spec->enableDependenciesIndirectly(containsTestSpec(spec));
@@ -1900,11 +1903,11 @@ void PluginManagerPrivate::profilingReport(const char *what, const PluginSpec *s
 QString PluginManagerPrivate::profilingSummary(qint64 *totalOut) const
 {
     QString summary;
-    const QVector specs = Utils::sorted(pluginSpecs,
-                                                      [](PluginSpec *s1, PluginSpec *s2) {
-                                                          return s1->performanceData().total()
-                                                                 < s2->performanceData().total();
-                                                      });
+    const PluginSpecs specs = Utils::sorted(pluginSpecs,
+                                            [](PluginSpec *s1, PluginSpec *s2) {
+                                                return s1->performanceData().total()
+                                                       < s2->performanceData().total();
+                                            });
     const qint64 total
         = std::accumulate(specs.constBegin(), specs.constEnd(), 0, [](qint64 t, PluginSpec *s) {
               return t + s->performanceData().total();
diff --git a/src/libs/extensionsystem/pluginspec.cpp b/src/libs/extensionsystem/pluginspec.cpp
index 2d492c385ff..5c65dd5192f 100644
--- a/src/libs/extensionsystem/pluginspec.cpp
+++ b/src/libs/extensionsystem/pluginspec.cpp
@@ -635,12 +635,12 @@ void PluginSpec::setForceEnabled(bool value)
 }
 
 // returns the plugins that it actually indirectly enabled
-QVector PluginSpec::enableDependenciesIndirectly(bool enableTestDependencies)
+PluginSpecs PluginSpec::enableDependenciesIndirectly(bool enableTestDependencies)
 {
     if (!isEffectivelyEnabled()) // plugin not enabled, nothing to do
         return {};
 
-    QVector enabled;
+    PluginSpecs enabled;
     for (auto it = d->dependencySpecs.cbegin(), end = d->dependencySpecs.cend(); it != end; ++it) {
         if (it.key().type != PluginDependency::Required
             && (!enableTestDependencies || it.key().type != PluginDependency::Test))
@@ -1058,7 +1058,7 @@ int PluginSpec::versionCompare(const QString &version1, const QString &version2)
 /*!
     \internal
 */
-bool PluginSpec::resolveDependencies(const QVector &specs)
+bool PluginSpec::resolveDependencies(const PluginSpecs &specs)
 {
     if (hasError())
         return false;
diff --git a/src/libs/extensionsystem/pluginspec.h b/src/libs/extensionsystem/pluginspec.h
index 7d45fe82c15..49a972d9149 100644
--- a/src/libs/extensionsystem/pluginspec.h
+++ b/src/libs/extensionsystem/pluginspec.h
@@ -78,6 +78,8 @@ struct EXTENSIONSYSTEM_EXPORT PerformanceData
     }
 };
 
+using PluginSpecs = QList;
+
 class EXTENSIONSYSTEM_EXPORT PluginSpec
 {
     friend class ::tst_PluginSpec;
@@ -130,8 +132,8 @@ public:
 
     virtual bool provides(const QString &pluginName, const QString &pluginVersion) const;
     virtual bool requiresAny(const QSet &plugins) const;
-    virtual QVector enableDependenciesIndirectly(bool enableTestDependencies);
-    virtual bool resolveDependencies(const QVector &pluginSpecs);
+    virtual PluginSpecs enableDependenciesIndirectly(bool enableTestDependencies);
+    virtual bool resolveDependencies(const PluginSpecs &pluginSpecs);
 
     virtual IPlugin *plugin() const = 0;
     virtual State state() const;
diff --git a/src/libs/extensionsystem/pluginview.cpp b/src/libs/extensionsystem/pluginview.cpp
index 902f90aca48..f4a86a41d41 100644
--- a/src/libs/extensionsystem/pluginview.cpp
+++ b/src/libs/extensionsystem/pluginview.cpp
@@ -198,7 +198,7 @@ public:
 class CollectionItem : public TreeItem
 {
 public:
-    CollectionItem(const QString &name, const QVector &plugins, PluginView *view)
+    CollectionItem(const QString &name, const PluginSpecs &plugins, PluginView *view)
         : m_name(name)
         , m_plugins(plugins)
         , m_view(view)
@@ -238,7 +238,7 @@ public:
     bool setData(int column, const QVariant &data, int role) override
     {
         if (column == LoadedColumn && role == Qt::CheckStateRole) {
-            const QVector affectedPlugins
+            const PluginSpecs affectedPlugins
                 = Utils::filtered(m_plugins, [](PluginSpec *spec) { return !spec->isRequired(); });
             if (m_view->setPluginsEnabled(toSet(affectedPlugins), data.toBool())) {
                 update();
@@ -258,7 +258,7 @@ public:
 
 public:
     QString m_name;
-    const QVector m_plugins;
+    const PluginSpecs m_plugins;
     PluginView *m_view; // Not owned.
 };
 
@@ -346,7 +346,7 @@ void PluginView::updatePlugins()
     // Model.
     m_model->clear();
 
-    const QHash> pluginCollections
+    const QHash pluginCollections
         = PluginManager::pluginCollections();
     std::vector collections;
     const auto end = pluginCollections.cend();
diff --git a/src/plugins/clangformat/clangformatindenter.cpp b/src/plugins/clangformat/clangformatindenter.cpp
index 95d847150f0..fc213da18ce 100644
--- a/src/plugins/clangformat/clangformatindenter.cpp
+++ b/src/plugins/clangformat/clangformatindenter.cpp
@@ -33,7 +33,7 @@ namespace ClangFormat {
 
 static bool isBeautifierPluginActivated()
 {
-    const QVector specs = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs specs = ExtensionSystem::PluginManager::plugins();
     return std::find_if(specs.begin(),
                         specs.end(),
                         [](ExtensionSystem::PluginSpec *spec) {
diff --git a/src/plugins/coreplugin/iwizardfactory.cpp b/src/plugins/coreplugin/iwizardfactory.cpp
index dc7a6da3e57..20adfda16bb 100644
--- a/src/plugins/coreplugin/iwizardfactory.cpp
+++ b/src/plugins/coreplugin/iwizardfactory.cpp
@@ -401,7 +401,7 @@ QSet IWizardFactory::pluginFeatures()
 {
     if (s_plugins.isEmpty()) {
         // Implicitly create a feature for each plugin loaded:
-        const QVector pluginVector = ExtensionSystem::PluginManager::plugins();
+        const ExtensionSystem::PluginSpecs pluginVector = ExtensionSystem::PluginManager::plugins();
         for (const ExtensionSystem::PluginSpec *s : pluginVector) {
             if (s->state() == ExtensionSystem::PluginSpec::Running)
                 s_plugins.insert(Id::fromString(s->name()));
diff --git a/src/plugins/extensionmanager/extensionsbrowser.cpp b/src/plugins/extensionmanager/extensionsbrowser.cpp
index d83c1ef3ee2..48eff3a16ac 100644
--- a/src/plugins/extensionmanager/extensionsbrowser.cpp
+++ b/src/plugins/extensionmanager/extensionsbrowser.cpp
@@ -37,7 +37,6 @@ namespace ExtensionManager::Internal {
 
 Q_LOGGING_CATEGORY(browserLog, "qtc.extensionmanager.browser", QtWarningMsg)
 
-using PluginSpecList = QList;
 using Tags = QStringList;
 
 constexpr QSize itemSize = {330, 86};
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
index c24ec9aa3e1..f46b2daf78d 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp
@@ -1722,7 +1722,7 @@ void editIn3dView(const SelectionContext &selectionContext)
 
 bool isEffectComposerActivated()
 {
-    const QVector specs = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs specs = ExtensionSystem::PluginManager::plugins();
     return std::find_if(specs.begin(), specs.end(),
                         [](ExtensionSystem::PluginSpec *spec) {
                             return spec->name() == "EffectComposer" && spec->isEffectivelyEnabled();
diff --git a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
index d5036c939cd..34cd4338ac0 100644
--- a/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
+++ b/src/plugins/qmldesigner/qmlpreviewplugin/qmlpreviewplugin.cpp
@@ -165,7 +165,7 @@ void QmlPreviewWidgetPlugin::setLanguageLocale(const QString &locale)
 
 QObject *QmlPreviewWidgetPlugin::getPreviewPlugin()
 {
-    const QVector &specs = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
     const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(),
                                  [](const ExtensionSystem::PluginSpec *p) {
         return p->name() == "QmlPreview";
diff --git a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp
index d041afbffd7..0b005d538f7 100644
--- a/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp
+++ b/src/plugins/qmlpreview/tests/qmlpreviewplugin_test.cpp
@@ -29,7 +29,7 @@ private slots:
 
 static ExtensionSystem::IPlugin *getPlugin()
 {
-    const QVector plugins = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs plugins = ExtensionSystem::PluginManager::plugins();
     auto it = std::find_if(plugins.begin(), plugins.end(), [](ExtensionSystem::PluginSpec *spec) {
         return spec->name() == "QmlPreview";
     });
diff --git a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp
index ae16f09fc22..e6028e1d7d5 100644
--- a/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp
+++ b/src/plugins/qmlprojectmanager/qmlmultilanguageaspect.cpp
@@ -21,7 +21,7 @@ namespace QmlProjectManager {
 
 static bool isMultilanguagePresent()
 {
-    const QVector &specs = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
     return std::find_if(specs.cbegin(), specs.cend(),
                         [](ExtensionSystem::PluginSpec *spec) {
                             return spec->name() == "MultiLanguage";
@@ -41,7 +41,7 @@ static FilePath getMultilanguageDatabaseFilePath(ProjectExplorer::Target *target
 
 static QObject *getPreviewPlugin()
 {
-    const QVector &specs = ExtensionSystem::PluginManager::plugins();
+    const ExtensionSystem::PluginSpecs &specs = ExtensionSystem::PluginManager::plugins();
     const auto pluginIt = std::find_if(specs.cbegin(), specs.cend(),
                                  [](const ExtensionSystem::PluginSpec *p) {
                                      return p->name() == "QmlPreview";
diff --git a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
index 4a9b0210a09..35ed6078139 100644
--- a/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
+++ b/tests/auto/extensionsystem/pluginmanager/tst_pluginmanager.cpp
@@ -140,7 +140,7 @@ void tst_PluginManager::circularPlugins()
 {
     PluginManager::setPluginPaths({pluginFolder(QLatin1String("circularplugins"))});
     PluginManager::loadPlugins();
-    const QVector plugins = PluginManager::plugins();
+    const PluginSpecs plugins = PluginManager::plugins();
     QCOMPARE(plugins.count(), 3);
     for (PluginSpec *spec : plugins) {
         if (spec->name() == "plugin1") {
@@ -164,7 +164,7 @@ void tst_PluginManager::correctPlugins1()
     PluginManager::loadPlugins();
     bool specError = false;
     bool runError = false;
-    const QVector plugins = PluginManager::plugins();
+    const PluginSpecs plugins = PluginManager::plugins();
     for (PluginSpec *spec : plugins) {
         if (spec->hasError()) {
             qDebug() << spec->filePath();
diff --git a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
index f52b0cf19a2..66828f8e63b 100644
--- a/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
+++ b/tests/auto/extensionsystem/pluginspec/tst_pluginspec.cpp
@@ -232,7 +232,7 @@ void tst_PluginSpec::locationAndPath()
 
 void tst_PluginSpec::resolveDependencies()
 {
-    QVector specs;
+    PluginSpecs specs;
     PluginSpec *spec1 = new CppPluginSpec();
     specs.append(spec1);
     spec1->readMetaData(metaData("testdependencies/spec1.json"));
@@ -276,7 +276,7 @@ void tst_PluginSpec::loadLibrary()
     QVERIFY(ps);
     CppPluginSpec *spec = static_cast(ps.value());
 
-    QVERIFY(spec->resolveDependencies(QVector()));
+    QVERIFY(spec->resolveDependencies({}));
     QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString()));
     QVERIFY(spec->plugin() != 0);
     QVERIFY(QLatin1String(spec->plugin()->metaObject()->className())
@@ -293,7 +293,7 @@ void tst_PluginSpec::initializePlugin()
         PLUGIN_DIR_PATH / "testplugin" / libraryName(QLatin1String("test")));
     QVERIFY(ps);
     CppPluginSpec *spec = static_cast(ps.value());
-    QVERIFY(spec->resolveDependencies(QVector()));
+    QVERIFY(spec->resolveDependencies({}));
     QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString()));
     bool isInitialized;
     QMetaObject::invokeMethod(spec->plugin(),
@@ -317,7 +317,7 @@ void tst_PluginSpec::initializeExtensions()
         PLUGIN_DIR_PATH / "testplugin" / libraryName(QLatin1String("test")));
     QVERIFY(ps);
     CppPluginSpec *spec = static_cast(ps.value());
-    QVERIFY(spec->resolveDependencies(QVector()));
+    QVERIFY(spec->resolveDependencies({}));
     QVERIFY2(spec->loadLibrary(), qPrintable(spec->errorString()));
     bool isExtensionsInitialized;
     QVERIFY(spec->initializePlugin());