diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-04-12 11:16:34 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-04-12 11:07:31 +0000 |
commit | cd8bafc98c952c83722983e9c7b11dd04ada0476 (patch) | |
tree | 1222932dbba1ebf41e8fbba37a6b82078b37b4e3 /src/lib/corelib/language/projectresolver.cpp | |
parent | 8ddf083330fdad8a153d9084470363ae0c2b3217 (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.cpp | 16 |
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); } |