aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-08-21 13:58:18 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-08-21 14:55:42 +0200
commit1358bf739a6580ccc1f4c113d5b1ba72784793a0 (patch)
tree52422df365cdfd409025e38df0b98906fa6d7ce5 /src/lib/corelib/language
parent08dffd6c5a7c72b7e18e16f7a6668c8c16bfc0a7 (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.cpp6
-rw-r--r--src/lib/corelib/language/language.h6
-rw-r--r--src/lib/corelib/language/projectresolver.cpp11
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();