diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2018-07-10 12:08:32 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2018-07-10 11:59:03 +0000 |
commit | 913101beef1165f4553435b6ce8fb71ebe3b4a5e (patch) | |
tree | 049ee90a638c03176bcdf998d400f238be5f7729 | |
parent | 079f69315954f2f6efc2167df3755c3737dc21ab (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.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/buildgraph/rulesapplicator.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/language.cpp | 3 |
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 |