diff options
| author | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-28 10:06:18 +0100 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-10-28 11:52:38 +0100 |
| commit | fa69cddcdfbdda334ebde569b8cd9a1f0390fec1 (patch) | |
| tree | 388aac837168ca81a76b7354954e6c6f4bc1286c /src/lib/buildgraph | |
| parent | 08a5cafa374420456e599d7eab619c4f7667cd97 (diff) | |
| download | qbs-fa69cddcdfbdda334ebde569b8cd9a1f0390fec1.tar.gz | |
Check for duplicate product names.
Strangely, no such check exists currently. Instead, one will typically
get an internal error on the artifact level later on.
Change-Id: Id9cd749a70564100bd7286b896f64cafbe9bfb73
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/buildgraph')
| -rw-r--r-- | src/lib/buildgraph/buildgraph.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/buildgraph/buildgraph.cpp b/src/lib/buildgraph/buildgraph.cpp index 819de79cc..f8c4f8b6a 100644 --- a/src/lib/buildgraph/buildgraph.cpp +++ b/src/lib/buildgraph/buildgraph.cpp @@ -396,7 +396,7 @@ void insertArtifact(const ResolvedProductPtr &product, Artifact *artifact, const pl.append(QString(" - %1 \n").arg(p->name)); } throw ErrorInfo(QString ("BUG: already inserted in this project: %1\n%2") - .arg(artifact->filePath()).arg(pl)); + .arg(artifact->filePath()).arg(pl), CodeLocation(), true); } } } @@ -462,18 +462,27 @@ static void doSanityChecksForProduct(const ResolvedProductConstPtr &product, con } } -void doSanityChecks(const ResolvedProjectPtr &project, const Logger &logger) +static void doSanityChecks(const ResolvedProjectPtr &project, QSet<QString> &productNames, + const Logger &logger) { logger.qbsDebug() << "Sanity checking project '" << project->name << "'"; foreach (const ResolvedProjectPtr &subProject, project->subProjects) - doSanityChecks(subProject, logger); + doSanityChecks(subProject, productNames, logger); foreach (const ResolvedProductConstPtr &product, project->products) { QBS_CHECK(product->project == project); QBS_CHECK(product->topLevelProject() == project->topLevelProject()); doSanityChecksForProduct(product, logger); + QBS_CHECK(!productNames.contains(product->name)); + productNames << product->name; } } +void doSanityChecks(const ResolvedProjectPtr &project, const Logger &logger) +{ + QSet<QString> productNames; + doSanityChecks(project, productNames, logger); +} + } // namespace Internal } // namespace qbs |
