diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-28 11:10:23 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-31 07:45:51 +0000 |
commit | cb86fa14be0a1814f5cfd8459a1ee99c447ff0dd (patch) | |
tree | ab3bdc57640079e082e52de66d33091b8f0be95f /src/lib/corelib/language/projectresolver.cpp | |
parent | b1fa1cd6ddee0423bfdccbb1e1bf704b75e033de (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.cpp | 13 |
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 |