diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-08-21 13:58:18 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-08-21 14:55:42 +0200 |
commit | 1358bf739a6580ccc1f4c113d5b1ba72784793a0 (patch) | |
tree | 52422df365cdfd409025e38df0b98906fa6d7ce5 /src/lib/corelib/language | |
parent | 08dffd6c5a7c72b7e18e16f7a6668c8c16bfc0a7 (diff) |
Apply file tags filter also to Transformer outputs.
This is currently done only for Rule artifacts.
Task-number: QBS-668
Change-Id: Iddeda8a9d567cc8122f3aca2c1c1e3ea878e687c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r-- | src/lib/corelib/language/language.cpp | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/language.h | 6 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 11 |
3 files changed, 17 insertions, 6 deletions
diff --git a/src/lib/corelib/language/language.cpp b/src/lib/corelib/language/language.cpp index 5c5fac445..5e711241c 100644 --- a/src/lib/corelib/language/language.cpp +++ b/src/lib/corelib/language/language.cpp @@ -1121,7 +1121,7 @@ template<typename T> bool listsAreEqual(const QList<T> &l1, const QList<T> &l2) } QString keyFromElem(const SourceArtifactPtr &sa) { return sa->absoluteFilePath; } -QString keyFromElem(const ResolvedTransformerConstPtr &t) { return t->transform->sourceCode; } +QString keyFromElem(const ResolvedTransformerPtr &t) { return t->transform->sourceCode; } QString keyFromElem(const RulePtr &r) { return r->toString(); } QString keyFromElem(const ArtifactPropertiesPtr &ap) { @@ -1157,8 +1157,8 @@ bool operator==(const ResolvedTransformer &t1, const ResolvedTransformer &t2) && t1.explicitlyDependsOn == t2.explicitlyDependsOn; } -bool transformerListsAreEqual(const QList<ResolvedTransformerConstPtr> &l1, - const QList<ResolvedTransformerConstPtr> &l2) +bool transformerListsAreEqual(const QList<ResolvedTransformerPtr> &l1, + const QList<ResolvedTransformerPtr> &l2) { return listsAreEqual(l1, l2); } diff --git a/src/lib/corelib/language/language.h b/src/lib/corelib/language/language.h index 145e4d22b..695fc69cb 100644 --- a/src/lib/corelib/language/language.h +++ b/src/lib/corelib/language/language.h @@ -319,8 +319,8 @@ bool operator==(const ResolvedTransformer &t1, const ResolvedTransformer &t2); inline bool operator!=(const ResolvedTransformer &t1, const ResolvedTransformer &t2) { return !(t1 == t2); } -bool transformerListsAreEqual(const QList<ResolvedTransformerConstPtr> &l1, - const QList<ResolvedTransformerConstPtr> &l2); +bool transformerListsAreEqual(const QList<ResolvedTransformerPtr> &l1, + const QList<ResolvedTransformerPtr> &l2); class ResolvedScanner : public PersistentObject { @@ -367,7 +367,7 @@ public: QSet<ResolvedProductPtr> dependencies; QList<FileTaggerConstPtr> fileTaggers; QList<ResolvedModuleConstPtr> modules; - QList<ResolvedTransformerConstPtr> transformers; + QList<ResolvedTransformerPtr> transformers; QList<ResolvedScannerConstPtr> scanners; QList<GroupPtr> groups; QList<ArtifactPropertiesPtr> artifactProperties; diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index 5e5eda739..c96847e26 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -381,6 +381,17 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext) product->fileTags += productContext.additionalFileTags; + foreach (const ResolvedTransformerPtr &transformer, product->transformers) { + for (int i = 0; i < transformer->outputs.count(); ++i) { + SourceArtifactPtr &artifact = transformer->outputs[i]; + foreach (const ArtifactPropertiesConstPtr &artifactProperties, + product->artifactProperties) { + if (artifact->fileTags.matches(artifactProperties->fileTagsFilter())) + artifact->properties = artifactProperties->propertyMap(); + } + } + } + m_productContext = 0; if (m_progressObserver) m_progressObserver->incrementProgressValue(); |