aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2017-07-28 11:10:23 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-07-31 07:45:51 +0000
commitcb86fa14be0a1814f5cfd8459a1ee99c447ff0dd (patch)
treeab3bdc57640079e082e52de66d33091b8f0be95f /src/lib/corelib/language/projectresolver.cpp
parentb1fa1cd6ddee0423bfdccbb1e1bf704b75e033de (diff)
Add a ResolvedProduct backpointer to Rule
Rule now has a back pointer to the owning product. Rule objects are not shared anymore among products. This allows for cleaner code in a subsequent commit. Change-Id: I44b90d4819afc3bdbe74cea22c4551e8db71b2f6 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/projectresolver.cpp')
-rw-r--r--src/lib/corelib/language/projectresolver.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index a286e51f1..31d1eeb9d 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -856,10 +856,12 @@ void ProjectResolver::resolveRule(Item *item, ProjectContext *projectContext)
"does not declare any input tags."), item->location()));
return;
}
- if (m_productContext)
+ if (m_productContext) {
+ rule->product = m_productContext->product.get();
m_productContext->product->rules += rule;
- else
+ } else {
projectContext->rules += rule;
+ }
}
void ProjectResolver::resolveRuleArtifact(const RulePtr &rule, Item *item)
@@ -1175,8 +1177,11 @@ void ProjectResolver::postProcess(const ResolvedProductPtr &product,
ProjectContext *projectContext) const
{
product->fileTaggers += projectContext->fileTaggers;
- for (const RulePtr &rule : qAsConst(projectContext->rules))
- product->rules += rule;
+ for (const RulePtr &rule : qAsConst(projectContext->rules)) {
+ RulePtr clonedRule = rule->clone();
+ clonedRule->product = product.get();
+ product->rules += clonedRule;
+ }
}
void ProjectResolver::applyFileTaggers(const ResolvedProductPtr &product) const