From 0a6651ac364513249c17f1373cfda37a7a8a74fe Mon Sep 17 00:00:00 2001 From: Richard Weickelt Date: Wed, 18 Dec 2019 20:31:10 +0100 Subject: Avoid an unnecessary copy operation Clang-tidy warns about an unnecessary copy being made because the container is std::vector, but the loop variable is SomeConstPtr&. Change-Id: I4cc640334fca4a2e58ee8ed8cebc2a3bca13f15b Reviewed-by: Ivan Komissarov Reviewed-by: Christian Kandeler --- src/lib/corelib/api/project.cpp | 19 +++++++++---------- src/lib/corelib/buildgraph/artifactvisitor.cpp | 2 +- src/lib/corelib/buildgraph/buildgraph.cpp | 8 ++++---- src/lib/corelib/buildgraph/buildgraphloader.cpp | 12 ++++++------ .../corelib/buildgraph/environmentscriptrunner.cpp | 6 +++--- src/lib/corelib/buildgraph/executor.cpp | 8 ++++---- src/lib/corelib/buildgraph/productinstaller.cpp | 2 +- src/lib/corelib/buildgraph/projectbuilddata.cpp | 4 ++-- src/lib/corelib/buildgraph/requesteddependencies.cpp | 6 +++--- src/lib/corelib/buildgraph/rulegraph.cpp | 4 ++-- src/lib/corelib/buildgraph/rulenode.cpp | 2 +- src/lib/corelib/buildgraph/rulesapplicator.cpp | 4 ++-- src/lib/corelib/jsextensions/moduleproperties.cpp | 2 +- src/lib/corelib/language/language.cpp | 10 +++++----- src/lib/corelib/language/projectresolver.cpp | 2 +- 15 files changed, 45 insertions(+), 46 deletions(-) (limited to 'src/lib') diff --git a/src/lib/corelib/api/project.cpp b/src/lib/corelib/api/project.cpp index d8525a4b6..18e8c6909 100644 --- a/src/lib/corelib/api/project.cpp +++ b/src/lib/corelib/api/project.cpp @@ -195,7 +195,7 @@ static QList enabledInternalProducts(const ResolvedProjectCo if (p->enabled && (includingNonDefault || p->builtByDefault())) products.push_back(p); } - for (const ResolvedProjectConstPtr &subProject : qAsConst(project->subProjects)) + for (const auto &subProject : qAsConst(project->subProjects)) products << enabledInternalProducts(subProject, includingNonDefault); return products; } @@ -218,7 +218,7 @@ static ResolvedProductPtr internalProductForProject(const ResolvedProjectConstPt if (matches(product, resolvedProduct)) return resolvedProduct; } - for (const ResolvedProjectConstPtr &subProject : qAsConst(project->subProjects)) { + for (const auto &subProject : qAsConst(project->subProjects)) { const ResolvedProductPtr &p = internalProductForProject(subProject, product); if (p) return p; @@ -272,13 +272,13 @@ GroupData ProjectPrivate::createGroupDataFromGroup(const GroupPtr &resolvedGroup group.d->name = resolvedGroup->name; group.d->prefix = resolvedGroup->prefix; group.d->location = resolvedGroup->location; - for (const SourceArtifactConstPtr &sa : resolvedGroup->files) { + for (const auto &sa : resolvedGroup->files) { ArtifactData artifact = createApiSourceArtifact(sa); setupInstallData(artifact, product); group.d->sourceArtifacts.push_back(artifact); } if (resolvedGroup->wildcards) { - for (const SourceArtifactConstPtr &sa : resolvedGroup->wildcards->files) { + for (const auto &sa : resolvedGroup->wildcards->files) { ArtifactData artifact = createApiSourceArtifact(sa); setupInstallData(artifact, product); group.d->sourceArtifactsFromWildcards.push_back(artifact); @@ -503,7 +503,7 @@ void ProjectPrivate::addFiles(const ProductData &product, const GroupData &group // due to conditions. for (const GroupPtr &group : qAsConst(groupContext.resolvedGroups)) { for (const QString &filePath : qAsConst(filesContext.absoluteFilePaths)) { - for (const SourceArtifactConstPtr &sa : group->files) { + for (const auto &sa : group->files) { if (sa->absoluteFilePath == filePath) { throw ErrorInfo(Tr::tr("File '%1' already exists in group '%2'.") .arg(filePath, group->name)); @@ -696,7 +696,7 @@ void ProjectPrivate::updateInternalCodeLocations(const ResolvedProjectPtr &proje lineOffset); updateLocationIfNecessary(scanner->scanScript.location(), changeLocation, lineOffset); } - for (const ResolvedModuleConstPtr &module : product->modules) { + for (const auto &module : product->modules) { updateLocationIfNecessary(module->setupBuildEnvironmentScript.location(), changeLocation, lineOffset); updateLocationIfNecessary(module->setupRunEnvironmentScript.location(), @@ -851,7 +851,7 @@ void ProjectPrivate::retrieveProjectData(ProjectData &projectData, projectData.d->name = internalProject->name; projectData.d->location = internalProject->location; projectData.d->enabled = internalProject->enabled; - for (const ResolvedProductConstPtr &resolvedProduct : internalProject->products) { + for (const auto &resolvedProduct : internalProject->products) { ProductData product; product.d->type = resolvedProduct->fileTags.toStringList(); product.d->name = resolvedProduct->name; @@ -904,8 +904,7 @@ void ProjectPrivate::retrieveProjectData(ProjectData &projectData, product.d->isValid = true; projectData.d->products << product; } - for (const ResolvedProjectConstPtr &internalSubProject - : qAsConst(internalProject->subProjects)) { + for (const auto &internalSubProject : qAsConst(internalProject->subProjects)) { if (!internalSubProject->enabled) continue; ProjectData subProject; @@ -1218,7 +1217,7 @@ Project::BuildGraphInfo Project::getBuildGraphInfo(const QString &bgFilePath, const QString propName = components.takeLast(); props.emplace_back(components.join(QLatin1Char('.')), propName); } - for (const ResolvedProductConstPtr &product : project->allProducts()) { + for (const auto &product : project->allProducts()) { if (props.empty()) break; if (product->profile() != project->profile()) diff --git a/src/lib/corelib/buildgraph/artifactvisitor.cpp b/src/lib/corelib/buildgraph/artifactvisitor.cpp index c28f07424..22c987572 100644 --- a/src/lib/corelib/buildgraph/artifactvisitor.cpp +++ b/src/lib/corelib/buildgraph/artifactvisitor.cpp @@ -61,7 +61,7 @@ void ArtifactVisitor::visitProduct(const ResolvedProductConstPtr &product) void ArtifactVisitor::visitProject(const ResolvedProjectConstPtr &project) { - for (const ResolvedProductConstPtr &product : project->allProducts()) + for (const auto &product : project->allProducts()) visitProduct(product); } diff --git a/src/lib/corelib/buildgraph/buildgraph.cpp b/src/lib/corelib/buildgraph/buildgraph.cpp index 3726c654d..0d5e8a1f0 100644 --- a/src/lib/corelib/buildgraph/buildgraph.cpp +++ b/src/lib/corelib/buildgraph/buildgraph.cpp @@ -278,7 +278,7 @@ private: } return result; } - for (const ResolvedModuleConstPtr &dependency : product->modules) { + for (const auto &dependency : product->modules) { if (dependency->isProduct) continue; QScriptValue obj = engine->newObject(engine->modulePropertyScriptClass()); @@ -661,7 +661,7 @@ void provideFullFileTagsAndProperties(Artifact *artifact) artifact->properties = artifact->product->moduleProperties; FileTags allTags = artifact->pureFileTags.empty() ? artifact->product->fileTagsForFileName(artifact->fileName()) : artifact->pureFileTags; - for (const ArtifactPropertiesConstPtr &props : artifact->product->artifactProperties) { + for (const auto &props : artifact->product->artifactProperties) { if (allTags.intersects(props->fileTagsFilter())) { artifact->properties = props->propertyMap(); allTags += props->extraFileTags(); @@ -733,7 +733,7 @@ static void doSanityChecksForProduct(const ResolvedProductConstPtr &product, CycleDetector cycleDetector(logger); cycleDetector.visitProduct(product); const ProductBuildData * const buildData = product->buildData.get(); - for (const ResolvedModuleConstPtr &m : product->modules) + for (const auto &m : product->modules) QBS_CHECK(m->product == product.get()); qCDebug(lcBuildGraph) << "enabled:" << product->enabled << "build data:" << buildData; if (product->enabled) @@ -836,7 +836,7 @@ static void doSanityChecks(const ResolvedProjectPtr &project, for (const ResolvedProjectPtr &subProject : qAsConst(project->subProjects)) doSanityChecks(subProject, allProducts, productNames, logger); - for (const ResolvedProductConstPtr &product : project->products) { + for (const auto &product : project->products) { QBS_CHECK(product->project == project); QBS_CHECK(product->topLevelProject() == project->topLevelProject()); doSanityChecksForProduct(product, allProducts, logger); diff --git a/src/lib/corelib/buildgraph/buildgraphloader.cpp b/src/lib/corelib/buildgraph/buildgraphloader.cpp index cad236db7..58a34b616 100644 --- a/src/lib/corelib/buildgraph/buildgraphloader.cpp +++ b/src/lib/corelib/buildgraph/buildgraphloader.cpp @@ -274,7 +274,7 @@ static void updateProductAndRulePointers(const ResolvedProductPtr &newProduct) const auto it = ruleMap.find(oldRule); if (it != ruleMap.cend()) return it->second; - for (const RuleConstPtr &r : qAsConst(newProduct->rules)) { + for (const auto &r : qAsConst(newProduct->rules)) { if (*r == *oldRule) { ruleMap.insert(std::make_pair(oldRule, r)); return r; @@ -363,7 +363,7 @@ void BuildGraphLoader::trackProjectChanges() ChildListHash childLists; if (!changedProducts.empty()) { oldBuildData = std::make_shared(restoredProject->buildData.get()); - for (const ResolvedProductConstPtr &product : qAsConst(allRestoredProducts)) { + for (const auto &product : qAsConst(allRestoredProducts)) { if (!product->buildData) continue; @@ -452,7 +452,7 @@ void BuildGraphLoader::trackProjectChanges() updateGeneratedArtifacts(product.get()); } - for (const ResolvedProductConstPtr &changedProduct : qAsConst(changedProducts)) { + for (const auto &changedProduct : qAsConst(changedProducts)) { rescueOldBuildData(changedProduct, m_freshProductsByName.value(changedProduct->uniqueName()), childLists, rescuableArtifactData.value(changedProduct->uniqueName())); @@ -615,7 +615,7 @@ bool BuildGraphLoader::hasProductFileChanged(const std::vectorlocation.filePath()), product->topLevelProject()->buildDirectory); Set wcFiles; - for (const SourceArtifactConstPtr &sourceArtifact : group->wildcards->files) + for (const auto &sourceArtifact : group->wildcards->files) wcFiles += sourceArtifact->absoluteFilePath; if (files == wcFiles) continue; @@ -742,9 +742,9 @@ static bool dependenciesAreEqual(const ResolvedProductConstPtr &p1, return false; Set names1; Set names2; - for (const ResolvedProductConstPtr &dep : qAsConst(p1->dependencies)) + for (const auto &dep : qAsConst(p1->dependencies)) names1 << dep->uniqueName(); - for (const ResolvedProductConstPtr &dep : qAsConst(p2->dependencies)) + for (const auto &dep : qAsConst(p2->dependencies)) names2 << dep->uniqueName(); return names1 == names2; } diff --git a/src/lib/corelib/buildgraph/environmentscriptrunner.cpp b/src/lib/corelib/buildgraph/environmentscriptrunner.cpp index 7d82efb41..9dafbf296 100644 --- a/src/lib/corelib/buildgraph/environmentscriptrunner.cpp +++ b/src/lib/corelib/buildgraph/environmentscriptrunner.cpp @@ -129,12 +129,12 @@ void EnvironmentScriptRunner::setupEnvironment() return; QMap moduleMap; - for (const ResolvedModuleConstPtr &module : m_product->modules) + for (const auto &module : m_product->modules) moduleMap.insert(module->name, module.get()); QHash > moduleParents; QHash > moduleChildren; - for (const ResolvedModuleConstPtr &module : m_product->modules) { + for (const auto &module : m_product->modules) { for (const QString &moduleName : qAsConst(module->moduleDependencies)) { const ResolvedModule * const depmod = moduleMap.value(moduleName); QBS_ASSERT(depmod, return); @@ -144,7 +144,7 @@ void EnvironmentScriptRunner::setupEnvironment() } QList rootModules; - for (const ResolvedModuleConstPtr &module : m_product->modules) { + for (const auto &module : m_product->modules) { if (moduleParents.value(module.get()).isEmpty()) { QBS_ASSERT(module, return); rootModules.push_back(module.get()); diff --git a/src/lib/corelib/buildgraph/executor.cpp b/src/lib/corelib/buildgraph/executor.cpp index de81ada20..101b42405 100644 --- a/src/lib/corelib/buildgraph/executor.cpp +++ b/src/lib/corelib/buildgraph/executor.cpp @@ -700,7 +700,7 @@ bool Executor::transformerHasMatchingInputFiles(const TransformerConstPtr &trans void Executor::setupJobLimits() { Settings settings(m_buildOptions.settingsDirectory()); - for (const ResolvedProductConstPtr &p : m_productsToBuild) { + for (const auto &p : m_productsToBuild) { const Preferences prefs(&settings, p->profile()); const JobLimits &jobLimitsFromSettings = prefs.jobLimits(); JobLimits effectiveJobLimits; @@ -737,7 +737,7 @@ void Executor::setupProgressObserver() if (!m_progressObserver) return; int totalEffort = 1; // For the effort after the last rule application; - for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) { + for (const auto &product : qAsConst(m_productsToBuild)) { QBS_CHECK(product->buildData); const auto filtered = filterByType(product->buildData->allNodes()); totalEffort += std::distance(filtered.begin(), filtered.end()); @@ -749,7 +749,7 @@ void Executor::doSanityChecks() { QBS_CHECK(m_project); QBS_CHECK(!m_productsToBuild.empty()); - for (const ResolvedProductConstPtr &product : qAsConst(m_productsToBuild)) { + for (const auto &product : qAsConst(m_productsToBuild)) { QBS_CHECK(product->buildData); QBS_CHECK(product->topLevelProject() == m_project.get()); } @@ -1228,7 +1228,7 @@ void Executor::syncFileDependencies() "removing from lookup table"; m_project->buildData->removeFromLookupTable(dep); bool isReferencedByArtifact = false; - for (const ResolvedProductConstPtr &product : m_allProducts) { + for (const auto &product : m_allProducts) { if (!product->buildData) continue; const auto artifactList = filterByType(product->buildData->allNodes()); diff --git a/src/lib/corelib/buildgraph/productinstaller.cpp b/src/lib/corelib/buildgraph/productinstaller.cpp index d4acc9ace..3b9845be4 100644 --- a/src/lib/corelib/buildgraph/productinstaller.cpp +++ b/src/lib/corelib/buildgraph/productinstaller.cpp @@ -96,7 +96,7 @@ void ProductInstaller::install() removeInstallRoot(); QList artifactsToInstall; - for (const ResolvedProductConstPtr &product : qAsConst(m_products)) { + for (const auto &product : qAsConst(m_products)) { QBS_CHECK(product->buildData); for (const Artifact *artifact : filterByType(product->buildData->allNodes())) { if (artifact->properties->qbsPropertyValue(StringConstants::installProperty()).toBool()) diff --git a/src/lib/corelib/buildgraph/projectbuilddata.cpp b/src/lib/corelib/buildgraph/projectbuilddata.cpp index 0c7f7bfdc..0ac6b1537 100644 --- a/src/lib/corelib/buildgraph/projectbuilddata.cpp +++ b/src/lib/corelib/buildgraph/projectbuilddata.cpp @@ -413,7 +413,7 @@ void BuildDataResolver::resolveProductBuildData(const ResolvedProductPtr &produc artifactsPerFileTag["qbs"].insert(qbsFileArtifact); // read sources - for (const SourceArtifactConstPtr &sourceArtifact : product->allEnabledFiles()) { + for (const auto &sourceArtifact : product->allEnabledFiles()) { QString filePath = sourceArtifact->absoluteFilePath; if (lookupArtifact(product, filePath)) continue; // ignore duplicate artifacts @@ -445,7 +445,7 @@ void BuildDataResolver::connectRulesToDependencies(const ResolvedProductPtr &pro std::vector ruleNodes; for (RuleNode *ruleNode : filterByType(product->buildData->allNodes())) ruleNodes.push_back(ruleNode); - for (const ResolvedProductConstPtr &dep : dependencies) { + for (const auto &dep : dependencies) { if (!dep->buildData) continue; for (RuleNode *depRuleNode : filterByType(dep->buildData->allNodes())) { diff --git a/src/lib/corelib/buildgraph/requesteddependencies.cpp b/src/lib/corelib/buildgraph/requesteddependencies.cpp index f993b2518..b95c8db94 100644 --- a/src/lib/corelib/buildgraph/requesteddependencies.cpp +++ b/src/lib/corelib/buildgraph/requesteddependencies.cpp @@ -48,9 +48,9 @@ namespace Internal { static Set depNamesForProduct(const ResolvedProduct *p) { Set names; - for (const ResolvedProductConstPtr &dep : p->dependencies) + for (const auto &dep : p->dependencies) names.insert(dep->uniqueName()); - for (const ResolvedModuleConstPtr &m : p->modules) { + for (const auto &m : p->modules) { if (!m->isProduct) names.insert(m->name); } @@ -73,7 +73,7 @@ bool RequestedDependencies::isUpToDate(const TopLevelProject *project) const { if (m_depsPerProduct.empty()) return true; - for (const ResolvedProductConstPtr &product : project->allProducts()) { + for (const auto &product : project->allProducts()) { const auto it = m_depsPerProduct.find(product->uniqueName()); if (it == m_depsPerProduct.cend()) continue; diff --git a/src/lib/corelib/buildgraph/rulegraph.cpp b/src/lib/corelib/buildgraph/rulegraph.cpp index e01a8bda8..23f22b7f2 100644 --- a/src/lib/corelib/buildgraph/rulegraph.cpp +++ b/src/lib/corelib/buildgraph/rulegraph.cpp @@ -61,7 +61,7 @@ void RuleGraph::build(const std::vector &rules, const FileTags &product m_parents.resize(rules.size()); m_children.resize(rules.size()); - for (const RuleConstPtr &rule : qAsConst(m_rules)) { + for (const auto &rule : qAsConst(m_rules)) { FileTags inFileTags = rule->inputs; inFileTags += rule->auxiliaryInputs; inFileTags += rule->explicitlyDependsOn; @@ -98,7 +98,7 @@ void RuleGraph::dump() const QByteArray indent; printf("---rule graph dump:\n"); Set rootRules; - for (const RuleConstPtr &rule : qAsConst(m_rules)) + for (const auto &rule : qAsConst(m_rules)) if (m_parents[rule->ruleGraphId].empty()) rootRules += rule->ruleGraphId; for (int idx : qAsConst(rootRules)) diff --git a/src/lib/corelib/buildgraph/rulenode.cpp b/src/lib/corelib/buildgraph/rulenode.cpp index 48d17934f..0558ba144 100644 --- a/src/lib/corelib/buildgraph/rulenode.cpp +++ b/src/lib/corelib/buildgraph/rulenode.cpp @@ -258,7 +258,7 @@ ArtifactSet RuleNode::currentInputArtifacts() const } } - for (const ResolvedProductConstPtr &dep : qAsConst(product->dependencies)) { + for (const auto &dep : qAsConst(product->dependencies)) { if (!dep->buildData) continue; for (Artifact * const a : filterByType(dep->buildData->allNodes())) { diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index 5d1144636..0d36e1e21 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -214,7 +214,7 @@ void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &p ScriptEngine::argumentList(Rule::argumentNamesForOutputArtifacts(), scope())); } else { Set outputFilePaths; - for (const RuleArtifactConstPtr &ruleArtifact : m_rule->artifacts) { + for (const auto &ruleArtifact : m_rule->artifacts) { const OutputArtifactInfo outputInfo = createOutputArtifactFromRuleArtifact( ruleArtifact, inputArtifacts, &outputFilePaths); if (!outputInfo.artifact) @@ -355,7 +355,7 @@ ArtifactSet RulesApplicator::collectAdditionalInputs(const FileTags &tags, const } if (inputsSources.testFlag(Dependencies)) { - for (const ResolvedProductConstPtr &depProduct : product->dependencies) { + for (const auto &depProduct : product->dependencies) { for (Artifact * const ta : depProduct->targetArtifacts()) { if (ta->fileTags().contains(fileTag) && !ta->fileTags().intersects(rule->excludedInputs)) { diff --git a/src/lib/corelib/jsextensions/moduleproperties.cpp b/src/lib/corelib/jsextensions/moduleproperties.cpp index c0fd8ca84..f721e0016 100644 --- a/src/lib/corelib/jsextensions/moduleproperties.cpp +++ b/src/lib/corelib/jsextensions/moduleproperties.cpp @@ -195,7 +195,7 @@ static QScriptValue js_moduleDependencies(QScriptContext *, ScriptEngine *engine QScriptValue result = engine->newArray(); quint32 idx = 0; for (const QString &depName : qAsConst(module->moduleDependencies)) { - for (const ResolvedModuleConstPtr &dep : module->product->modules) { + for (const auto &dep : module->product->modules) { if (dep->name != depName) continue; QScriptValue obj = engine->newObject(engine->modulePropertyScriptClass()); diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 3a08c089b..7eec99947 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -276,7 +276,7 @@ QString Rule::toString() const FileTags Rule::staticOutputFileTags() const { FileTags result; - for (const RuleArtifactConstPtr &artifact : artifacts) + for (const auto &artifact : artifacts) result.unite(artifact->fileTags); return result; } @@ -323,7 +323,7 @@ void ResolvedProduct::accept(BuildGraphVisitor *visitor) const std::vector ResolvedProduct::allFiles() const { std::vector lst; - for (const GroupConstPtr &group : groups) + for (const auto &group : groups) lst << group->allFiles(); return lst; } @@ -335,7 +335,7 @@ std::vector ResolvedProduct::allFiles() const std::vector ResolvedProduct::allEnabledFiles() const { std::vector lst; - for (const GroupConstPtr &group : groups) { + for (const auto &group : groups) { if (group->enabled) lst << group->allFiles(); } @@ -541,7 +541,7 @@ TopLevelProject *ResolvedProject::topLevelProject() std::vector ResolvedProject::allSubProjects() const { std::vector projectList = subProjects; - for (const ResolvedProjectConstPtr &subProject : subProjects) + for (const auto &subProject : subProjects) projectList << subProject->allSubProjects(); return projectList; } @@ -549,7 +549,7 @@ std::vector ResolvedProject::allSubProjects() const std::vector ResolvedProject::allProducts() const { std::vector productList = products; - for (const ResolvedProjectConstPtr &subProject : qAsConst(subProjects)) + for (const auto &subProject : qAsConst(subProjects)) productList << subProject->allProducts(); return productList; } diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index d5b84af16..fd6063381 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -1459,7 +1459,7 @@ void ProjectResolver::matchArtifactProperties(const ResolvedProductPtr &product, const std::vector &artifacts) { for (const SourceArtifactPtr &artifact : artifacts) { - for (const ArtifactPropertiesConstPtr &artifactProperties : product->artifactProperties) { + for (const auto &artifactProperties : product->artifactProperties) { if (!artifact->isTargetOfModule() && artifact->fileTags.intersects(artifactProperties->fileTagsFilter())) { artifact->properties = artifactProperties->propertyMap(); -- cgit v1.2.3