aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-04-12 11:16:34 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-04-12 11:07:31 +0000
commitcd8bafc98c952c83722983e9c7b11dd04ada0476 (patch)
tree1222932dbba1ebf41e8fbba37a6b82078b37b4e3 /src/lib/corelib/language/projectresolver.cpp
parent8ddf083330fdad8a153d9084470363ae0c2b3217 (diff)
Fix false positives in change tracking of exported modules
... by sorting some data structures. Change-Id: I59b0244d9e489e2d4445846f6a8c796e603837c5 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index e626462c6..995d6ab1c 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -913,12 +913,19 @@ void ProjectResolver::collectExportedProductDependencies()
if (!contains(directDepNames, dep.product->name))
continue;
- exportingProduct->exportedModule.productDependencies.insert(dep.product);
+ if (!contains(exportingProduct->exportedModule.productDependencies, dep.product))
+ exportingProduct->exportedModule.productDependencies.push_back(dep.product);
if (!dep.parameters.isEmpty()) {
exportingProduct->exportedModule.dependencyParameters.insert(dep.product,
dep.parameters);
}
}
+ auto &productDeps = exportingProduct->exportedModule.productDependencies;
+ static const auto cmpFunc = [](const ResolvedProductConstPtr &p1,
+ const ResolvedProductConstPtr &p2) {
+ return p1->uniqueName() < p2->uniqueName();
+ };
+ std::sort(productDeps.begin(), productDeps.end(), cmpFunc);
}
}
@@ -1042,6 +1049,10 @@ void ProjectResolver::resolveExport(Item *exportItem, ProjectContext *)
{
ExportedModule &exportedModule = m_productContext->product->exportedModule;
setupExportedProperties(exportItem, QString(), exportedModule.m_properties);
+ static const auto cmpFunc = [](const ExportedProperty &p1, const ExportedProperty &p2) {
+ return p1.fullName < p2.fullName;
+ };
+ std::sort(exportedModule.m_properties.begin(), exportedModule.m_properties.end(), cmpFunc);
for (const Item * const child : exportItem->children())
exportedModule.children.push_back(resolveExportChild(child, exportedModule));
for (const JsImport &jsImport : exportItem->file()->jsImports()) {
@@ -1533,7 +1544,8 @@ void ProjectResolver::resolveProductDependencies(const ProjectContext &projectCo
if (depInfos.hasDisabledDependency)
disabledDependency = true;
for (const auto &dep : depInfos.dependencies) {
- rproduct->dependencies.insert(dep.product);
+ if (!contains(rproduct->dependencies, dep.product))
+ rproduct->dependencies.push_back(dep.product);
if (!dep.parameters.empty())
rproduct->dependencyParameters.insert(dep.product, dep.parameters);
}