From 003ebacfdc16c8b65c7d96b4edf4d0821fe695cd Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 26 Nov 2013 14:19:07 +0100 Subject: Better error diagnostics. - Add sanity check for multiple artifacts with the same file path. - Print more information in case of multiple inputs to a non-multiplex rule. Change-Id: Ic76248fe61ba02bf3ff0820b9c968efc4b04ff20 Reviewed-by: Joerg Bornemann --- src/lib/buildgraph/buildgraph.cpp | 3 +++ src/lib/buildgraph/rulesapplicator.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/lib/buildgraph/buildgraph.cpp b/src/lib/buildgraph/buildgraph.cpp index f8c4f8b6a..cb3d6bda3 100644 --- a/src/lib/buildgraph/buildgraph.cpp +++ b/src/lib/buildgraph/buildgraph.cpp @@ -428,8 +428,11 @@ static void doSanityChecksForProduct(const ResolvedProductConstPtr &product, con logger.qbsTrace() << "Checking target artifact '" << ta->fileName() << "'."; QBS_CHECK(buildData->artifacts.contains(ta)); } + QSet filePaths; foreach (Artifact * const artifact, buildData->artifacts) { logger.qbsDebug() << "Sanity checking artifact '" << artifact->fileName() << "'"; + QBS_CHECK(!filePaths.contains(artifact->filePath())); + filePaths << artifact->filePath(); QBS_CHECK(artifact->product == product); foreach (const Artifact * const parent, artifact->parents) QBS_CHECK(parent->children.contains(artifact)); diff --git a/src/lib/buildgraph/rulesapplicator.cpp b/src/lib/buildgraph/rulesapplicator.cpp index 0e3e95374..788549ad4 100644 --- a/src/lib/buildgraph/rulesapplicator.cpp +++ b/src/lib/buildgraph/rulesapplicator.cpp @@ -268,6 +268,12 @@ Artifact *RulesApplicator::createOutputArtifact(const RuleArtifactConstPtr &rule .arg(outputArtifact->transformer->rule->script->location.line()) .arg(outputArtifact->transformer->rule->script->location.column()) .arg(th); + + QStringList inputFilePaths; + foreach (const Artifact * const a, m_transformer->inputs) + inputFilePaths << a->filePath(); + e.append(Tr::tr("The input artifacts are: %1") + .arg(inputFilePaths.join(QLatin1String(", ")))); throw ErrorInfo(e); } } -- cgit v1.2.3