aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/projectresolver.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2017-07-24 11:10:28 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2017-08-03 09:52:57 +0000
commit3b95913c674edcdf94eea673aa81d4f670231555 (patch)
tree4c8136e08faeedcd351e75301f6ebe0276988df0 /src/lib/corelib/language/projectresolver.cpp
parentde14d18638b6aaf7c52847fec2e534f50c14b95d (diff)
Add FileTagger.priority
Enable users to override FileTagger items by creating a conflicting FileTagger that has a higher numerical priority value. [ChangeLog] Introduced the property FileTagger.priority, and enable users to override FileTagger items. Change-Id: Idc6f5d003b7ad468f03a2eae5d19404c1f3eb06b Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> 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.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp
index 348b0af42..d1d70e445 100644
--- a/src/lib/corelib/language/projectresolver.cpp
+++ b/src/lib/corelib/language/projectresolver.cpp
@@ -943,7 +943,9 @@ void ProjectResolver::resolveFileTagger(Item *item, ProjectContext *projectConte
if (pattern.isEmpty())
throw ErrorInfo(Tr::tr("A FileTagger pattern must not be empty."), item->location());
}
- fileTaggers += FileTagger::create(patterns, fileTags);
+
+ const int priority = m_evaluator->intValue(item, QLatin1String("priority"));
+ fileTaggers += FileTagger::create(patterns, fileTags, priority);
}
void ProjectResolver::resolveScanner(Item *item, ProjectResolver::ProjectContext *projectContext)
@@ -1185,6 +1187,10 @@ void ProjectResolver::postProcess(const ResolvedProductPtr &product,
ProjectContext *projectContext) const
{
product->fileTaggers += projectContext->fileTaggers;
+ std::sort(std::begin(product->fileTaggers), std::end(product->fileTaggers),
+ [] (const FileTaggerConstPtr &a, const FileTaggerConstPtr &b) {
+ return a->priority() > b->priority();
+ });
for (const RulePtr &rule : qAsConst(projectContext->rules)) {
RulePtr clonedRule = rule->clone();
clonedRule->product = product.get();