diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-06-24 11:19:08 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-07-02 11:18:42 +0200 |
commit | 1cf03765801e3f391323bba3e040a8786017354a (patch) | |
tree | 54b2d21267d0de1e800c087e4f8e33176f86c59c /src/lib/corelib/language | |
parent | e655304fed77ad45cb083a4f62ba308d734025a3 (diff) |
Correctly handle overriding of file tags via an empty list.
Task-number: QBS-633
Change-Id: I4bf750ff94d6fae38fb3fdb49de265caddcd789e
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r-- | src/lib/corelib/language/evaluator.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/evaluator.h | 2 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 5 |
3 files changed, 7 insertions, 4 deletions
diff --git a/src/lib/corelib/language/evaluator.cpp b/src/lib/corelib/language/evaluator.cpp index 46f0476e6..692c1254e 100644 --- a/src/lib/corelib/language/evaluator.cpp +++ b/src/lib/corelib/language/evaluator.cpp @@ -100,9 +100,9 @@ bool Evaluator::boolValue(const Item *item, const QString &name, bool defaultVal return v.toBool(); } -FileTags Evaluator::fileTagsValue(const Item *item, const QString &name) +FileTags Evaluator::fileTagsValue(const Item *item, const QString &name, bool *propertySet) { - return FileTags::fromStringList(stringListValue(item, name)); + return FileTags::fromStringList(stringListValue(item, name, propertySet)); } QString Evaluator::stringValue(const Item *item, const QString &name, diff --git a/src/lib/corelib/language/evaluator.h b/src/lib/corelib/language/evaluator.h index a17605af1..485ac5557 100644 --- a/src/lib/corelib/language/evaluator.h +++ b/src/lib/corelib/language/evaluator.h @@ -57,7 +57,7 @@ public: bool boolValue(const Item *item, const QString &name, bool defaultValue = false, bool *propertyWasSet = 0); - FileTags fileTagsValue(const Item *item, const QString &name); + FileTags fileTagsValue(const Item *item, const QString &name, bool *propertySet = 0); QString stringValue(const Item *item, const QString &name, const QString &defaultValue = QString(), bool *propertyWasSet = 0); QStringList stringListValue(const Item *item, const QString &name, bool *propertyWasSet = 0); diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index a7bd12a31..bf01fd0d8 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -508,8 +508,11 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext) } group->location = item->location(); group->enabled = isEnabled; - group->fileTags = m_evaluator->fileTagsValue(item, QLatin1String("fileTags")); + bool fileTagsSet; + group->fileTags = m_evaluator->fileTagsValue(item, QLatin1String("fileTags"), &fileTagsSet); group->overrideTags = m_evaluator->boolValue(item, QLatin1String("overrideTags")); + if (group->overrideTags && group->fileTags.isEmpty() && fileTagsSet) + group->fileTags.insert(unknownFileTag()); if (!patterns.isEmpty()) { SourceWildCards::Ptr wildcards = SourceWildCards::create(); |