diff options
-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 |