diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-31 12:08:14 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-07-31 17:15:40 +0200 |
commit | db9a29f2c94fc47e0fe7bcac0142f48e2468c0da (patch) | |
tree | 5bd9529190252ecc784cb26251be6712669e6acc /src/lib | |
parent | 885e66e13c7b6eedbda4754989f5fb894ba37e44 (diff) |
fix condition for "conflicting rules" error
Change-Id: I3877fcee643e1b80b2ee5030bc2dd98bb13244cd
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp index 4986a517b..632606566 100644 --- a/src/lib/corelib/buildgraph/rulesapplicator.cpp +++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp @@ -276,6 +276,30 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F Artifact *outputArtifact = lookupArtifact(m_product, outputPath); if (outputArtifact) { + if (outputArtifact->transformer && outputArtifact->transformer->rule != m_rule) { + QString e = Tr::tr("Conflicting rules for producing %1 %2 \n") + .arg(outputArtifact->filePath(), + QLatin1Char('[') + + outputArtifact->fileTags.toStringList().join(QLatin1String(", ")) + + QLatin1Char(']')); + QString str = QLatin1Char('[') + m_rule->inputs.toStringList().join(QLatin1String(", ")) + + QLatin1String("] -> [") + outputArtifact->fileTags.toStringList() + .join(QLatin1String(", ")) + QLatin1Char(']'); + + e += QString::fromLatin1(" while trying to apply: %1:%2:%3 %4\n") + .arg(m_rule->prepareScript->location.fileName()) + .arg(m_rule->prepareScript->location.line()) + .arg(m_rule->prepareScript->location.column()) + .arg(str); + + e += QString::fromLatin1(" was already defined in: %1:%2:%3 %4\n") + .arg(outputArtifact->transformer->rule->prepareScript->location.fileName()) + .arg(outputArtifact->transformer->rule->prepareScript->location.line()) + .arg(outputArtifact->transformer->rule->prepareScript->location.column()) + .arg(str); + + throw ErrorInfo(e); + } if (outputArtifact->transformer && outputArtifact->transformer != m_transformer) { QBS_CHECK(!m_transformer); @@ -287,35 +311,6 @@ Artifact *RulesApplicator::createOutputArtifact(const QString &filePath, const F } m_transformer = outputArtifact->transformer; m_transformer->inputs.unite(inputArtifacts); - - if (Q_UNLIKELY(m_transformer->inputs.count() > 1 && !m_rule->multiplex)) { - QString th = QLatin1Char('[') + outputArtifact->fileTags.toStringList() - .join(QLatin1String(", ")) + QLatin1Char(']'); - QString e = Tr::tr("Conflicting rules for producing %1 %2 \n") - .arg(outputArtifact->filePath(), th); - th = QLatin1Char('[') + m_rule->inputs.toStringList().join(QLatin1String(", ")) - + QLatin1String("] -> [") + outputArtifact->fileTags.toStringList() - .join(QLatin1String(", ")) + QLatin1Char(']'); - - e += QString::fromLatin1(" while trying to apply: %1:%2:%3 %4\n") - .arg(m_rule->prepareScript->location.fileName()) - .arg(m_rule->prepareScript->location.line()) - .arg(m_rule->prepareScript->location.column()) - .arg(th); - - e += QString::fromLatin1(" was already defined in: %1:%2:%3 %4\n") - .arg(outputArtifact->transformer->rule->prepareScript->location.fileName()) - .arg(outputArtifact->transformer->rule->prepareScript->location.line()) - .arg(outputArtifact->transformer->rule->prepareScript->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); - } } outputArtifact->fileTags += fileTags; outputArtifact->clearTimestamp(); |