aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2020-10-25 18:18:46 +0100
committerIvan Komissarov <ABBAPOH@gmail.com>2020-10-26 09:56:02 +0000
commitd91045953cda7aeb655e501561d78c7ad14038fa (patch)
tree2a7ce3bf431b8ba6d17d05250cd20080d03b32d7 /src/lib/corelib/buildgraph
parent73ad0198179604067c2d6ebcc2e658e12d576010 (diff)
Get rid of goto in InputArtifactScanner::resolveScanResultDependencies
Change-Id: I9220b1e6344e90401abf4fb91115e77a3a6c996f Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/buildgraph')
-rw-r--r--src/lib/corelib/buildgraph/inputartifactscanner.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/lib/corelib/buildgraph/inputartifactscanner.cpp b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
index fea8c8c7d..ad674596a 100644
--- a/src/lib/corelib/buildgraph/inputartifactscanner.cpp
+++ b/src/lib/corelib/buildgraph/inputartifactscanner.cpp
@@ -266,23 +266,25 @@ void InputArtifactScanner::resolveScanResultDependencies(const Artifact *inputAr
const RawScanResult &scanResult, QList<FileResourceBase *> *artifactsToScan,
InputArtifactScannerContext::ScannerResolvedDependenciesCache &cache)
{
- for (const RawScannedDependency &dependency : scanResult.deps) {
+ auto getResolvedDependency = [inputArtifact, &cache](const RawScannedDependency &dependency)
+ -> ResolvedDependency*
+ {
const QString &dependencyFilePath = dependency.filePath();
InputArtifactScannerContext::ResolvedDependencyCacheItem &cachedResolvedDependencyItem
= cache.resolvedDependenciesCache[dependency.dirPath()][dependency.fileName()];
ResolvedDependency &resolvedDependency = cachedResolvedDependencyItem.resolvedDependency;
if (cachedResolvedDependencyItem.valid) {
if (resolvedDependency.filePath.isEmpty())
- goto unresolved;
- goto resolved;
+ return nullptr;
+ return &resolvedDependency;
}
cachedResolvedDependencyItem.valid = true;
if (FileInfo::isAbsolute(dependencyFilePath)) {
resolveDepencency(dependency, inputArtifact->product.get(), &resolvedDependency);
if (resolvedDependency.filePath.isEmpty())
- goto unresolved;
- goto resolved;
+ return nullptr;
+ return &resolvedDependency;
}
// try include paths
@@ -290,14 +292,19 @@ void InputArtifactScanner::resolveScanResultDependencies(const Artifact *inputAr
resolveDepencency(dependency, inputArtifact->product.get(),
&resolvedDependency, includePath);
if (resolvedDependency.isValid())
- goto resolved;
+ return &resolvedDependency;
}
+ return nullptr;
+ };
-unresolved:
- qCWarning(lcDepScan) << "unresolved dependency " << dependencyFilePath;
- continue;
+ for (const RawScannedDependency &dependency : scanResult.deps) {
+ const auto maybeResolvedDependency = getResolvedDependency(dependency);
+ if (!maybeResolvedDependency) {
+ qCWarning(lcDepScan) << "unresolved dependency " << dependency.filePath();
+ continue;
+ }
+ auto &resolvedDependency = *maybeResolvedDependency;
-resolved:
handleDependency(resolvedDependency);
if (artifactsToScan && resolvedDependency.file) {
if (resolvedDependency.file->fileType() == FileResourceBase::FileTypeArtifact) {