aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2018-07-10 12:08:32 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2018-07-10 11:59:03 +0000
commit913101beef1165f4553435b6ce8fb71ebe3b4a5e (patch)
tree049ee90a638c03176bcdf998d400f238be5f7729
parent079f69315954f2f6efc2167df3755c3737dc21ab (diff)
Consider Rule::excludedInputs where needed
...and add an assert that ensures that excluded inputs never appear in the rule application. Task-number: QBS-1171 Change-Id: Ia71c3224807bd9370f0d5048db45d6f9fb570fa1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/lib/corelib/buildgraph/rulenode.cpp2
-rw-r--r--src/lib/corelib/buildgraph/rulesapplicator.cpp2
-rw-r--r--src/lib/corelib/language/language.cpp3
3 files changed, 6 insertions, 1 deletions
diff --git a/src/lib/corelib/buildgraph/rulenode.cpp b/src/lib/corelib/buildgraph/rulenode.cpp
index 6c10b3dd4..27f2d2c55 100644
--- a/src/lib/corelib/buildgraph/rulenode.cpp
+++ b/src/lib/corelib/buildgraph/rulenode.cpp
@@ -204,6 +204,8 @@ ArtifactSet RuleNode::currentInputArtifacts() const
// This can e.g. happen for the ["cpp", "hpp"] -> ["hpp", "cpp", "unmocable"] rule.
continue;
}
+ if (artifact->fileTags().intersects(m_rule->excludedInputs))
+ continue;
s += artifact;
}
}
diff --git a/src/lib/corelib/buildgraph/rulesapplicator.cpp b/src/lib/corelib/buildgraph/rulesapplicator.cpp
index 2bf20496a..1144e5ff5 100644
--- a/src/lib/corelib/buildgraph/rulesapplicator.cpp
+++ b/src/lib/corelib/buildgraph/rulesapplicator.cpp
@@ -177,6 +177,8 @@ static QStringList toStringList(const ArtifactSet &artifacts)
void RulesApplicator::doApply(const ArtifactSet &inputArtifacts, QScriptValue &prepareScriptContext)
{
evalContext()->checkForCancelation();
+ for (const Artifact *inputArtifact : inputArtifacts)
+ QBS_CHECK(!inputArtifact->fileTags().intersects(m_rule->excludedInputs));
qCDebug(lcBuildGraph) << "apply rule" << m_rule->toString()
<< toStringList(inputArtifacts).join(QLatin1String(",\n "));
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp
index ac78b06c5..56c310272 100644
--- a/src/lib/corelib/language/language.cpp
+++ b/src/lib/corelib/language/language.cpp
@@ -281,7 +281,8 @@ QString Rule::toString() const
bool Rule::acceptsAsInput(Artifact *artifact) const
{
- return artifact->fileTags().intersects(inputs);
+ return artifact->fileTags().intersects(inputs)
+ && !artifact->fileTags().intersects(excludedInputs);
}
FileTags Rule::staticOutputFileTags() const