summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-07-24 17:37:12 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-07-25 12:18:24 +0200
commitbfae7b1363558de6f60538204f7e326293922ab8 (patch)
treeaa2bd6d5aa119054bfa3e9ad4c381f5a1736fe5b
parentdaabd183bfc32301bec50a40275152bba66d71da (diff)
downloadqbs-bfae7b1363558de6f60538204f7e326293922ab8.tar.gz
fix default value initialization
The default values for properties must be set in the property declarations to make them available in other properties. Affected were all condition properties, Group.overrideTags, Artifact.alwaysUpdated and Rule.multiplex. Task-number: QBS-341 Change-Id: Ia8d34341c43aed852a858d381ef39b1ba85dbd6e Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--src/lib/language/builtindeclarations.cpp14
-rw-r--r--src/lib/language/projectresolver.cpp16
2 files changed, 18 insertions, 12 deletions
diff --git a/src/lib/language/builtindeclarations.cpp b/src/lib/language/builtindeclarations.cpp
index 5ea695924..70e628710 100644
--- a/src/lib/language/builtindeclarations.cpp
+++ b/src/lib/language/builtindeclarations.cpp
@@ -145,7 +145,9 @@ void BuiltinDeclarations::setupItemForBuiltinType(Item *item) const
static PropertyDeclaration conditionProperty()
{
- return PropertyDeclaration(QLatin1String("condition"), PropertyDeclaration::Boolean);
+ PropertyDeclaration decl(QLatin1String("condition"), PropertyDeclaration::Boolean);
+ decl.initialValueSource = QLatin1String("true");
+ return decl;
}
static PropertyDeclaration nameProperty()
@@ -159,7 +161,9 @@ void BuiltinDeclarations::addArtifactItem()
properties += conditionProperty();
properties += PropertyDeclaration(QLatin1String("fileName"), PropertyDeclaration::Verbatim);
properties += PropertyDeclaration(QLatin1String("fileTags"), PropertyDeclaration::Variant);
- properties += PropertyDeclaration(QLatin1String("alwaysUpdated"), PropertyDeclaration::Boolean);
+ PropertyDeclaration decl(QLatin1String("alwaysUpdated"), PropertyDeclaration::Boolean);
+ decl.initialValueSource = QLatin1String("true");
+ properties += decl;
m_builtins[QLatin1String("Artifact")] = properties;
}
@@ -242,7 +246,7 @@ void BuiltinDeclarations::addProbeItem()
void BuiltinDeclarations::addProductItem()
{
QList<PropertyDeclaration> properties;
- properties += PropertyDeclaration(QLatin1String("condition"), PropertyDeclaration::Boolean);
+ properties += conditionProperty();
properties += PropertyDeclaration(QLatin1String("type"), PropertyDeclaration::StringList);
properties += nameProperty();
PropertyDeclaration decl = PropertyDeclaration("targetName", PropertyDeclaration::String);
@@ -288,7 +292,9 @@ void BuiltinDeclarations::addRuleItem()
{
QList<PropertyDeclaration> properties;
properties += conditionProperty();
- properties += PropertyDeclaration(QLatin1String("multiplex"), PropertyDeclaration::Boolean);
+ PropertyDeclaration decl(QLatin1String("multiplex"), PropertyDeclaration::Boolean);
+ decl.initialValueSource = QLatin1String("false");
+ properties += decl;
properties += PropertyDeclaration(QLatin1String("inputs"), PropertyDeclaration::Variant);
properties += PropertyDeclaration(QLatin1String("usings"), PropertyDeclaration::Variant);
properties += PropertyDeclaration(QLatin1String("explicitlyDependsOn"),
diff --git a/src/lib/language/projectresolver.cpp b/src/lib/language/projectresolver.cpp
index d2ee70ae0..3996b64c3 100644
--- a/src/lib/language/projectresolver.cpp
+++ b/src/lib/language/projectresolver.cpp
@@ -183,7 +183,7 @@ void ProjectResolver::resolveProject(Item *item, ProjectContext *projectContext)
if (projectContext->project->name.isEmpty())
projectContext->project->name = FileInfo::baseName(item->location().fileName()); // FIXME: Must also be changed in item?
projectContext->project->enabled
- = m_evaluator->boolValue(item, QLatin1String("condition"), true);
+ = m_evaluator->boolValue(item, QLatin1String("condition"));
if (!projectContext->project->enabled)
return;
@@ -259,7 +259,7 @@ void ProjectResolver::resolveProduct(Item *item, ProjectContext *projectContext)
m_logger.qbsTrace() << "[PR] resolveProduct " << product->name;
ModuleLoader::overrideItemProperties(item, product->name, m_overriddenProperties);
m_productsByName.insert(product->name, product);
- product->enabled = m_evaluator->boolValue(item, QLatin1String("condition"), true);
+ product->enabled = m_evaluator->boolValue(item, QLatin1String("condition"));
product->additionalFileTags
= m_evaluator->fileTagsValue(item, QLatin1String("additionalFileTags"));
product->fileTags = m_evaluator->fileTagsValue(item, QLatin1String("type"));
@@ -423,11 +423,11 @@ void ProjectResolver::resolveGroup(Item *item, ProjectContext *projectContext)
files[i].prepend(prefix);
}
FileTags fileTags = m_evaluator->fileTagsValue(item, QLatin1String("fileTags"));
- bool overrideTags = m_evaluator->boolValue(item, QLatin1String("overrideTags"), true);
+ bool overrideTags = m_evaluator->boolValue(item, QLatin1String("overrideTags"));
GroupPtr group = ResolvedGroup::create();
group->location = item->location();
- group->enabled = m_evaluator->boolValue(item, QLatin1String("condition"), true);
+ group->enabled = m_evaluator->boolValue(item, QLatin1String("condition"));
if (!patterns.isEmpty()) {
SourceWildCards::Ptr wildcards = SourceWildCards::create();
@@ -477,7 +477,7 @@ void ProjectResolver::resolveRule(Item *item, ProjectContext *projectContext)
{
checkCancelation();
- if (!m_evaluator->boolValue(item, QLatin1String("condition"), true))
+ if (!m_evaluator->boolValue(item, QLatin1String("condition")))
return;
RulePtr rule = Rule::create();
@@ -507,7 +507,7 @@ void ProjectResolver::resolveRule(Item *item, ProjectContext *projectContext)
rule->jsImports = item->file()->jsImports();
rule->jsExtensions = item->file()->jsExtensions();
rule->script = prepareScript;
- rule->multiplex = m_evaluator->boolValue(item, "multiplex", false);
+ rule->multiplex = m_evaluator->boolValue(item, QLatin1String("multiplex"));
rule->inputs = m_evaluator->fileTagsValue(item, "inputs");
rule->usings = m_evaluator->fileTagsValue(item, "usings");
rule->explicitlyDependsOn = m_evaluator->fileTagsValue(item, "explicitlyDependsOn");
@@ -548,7 +548,7 @@ void ProjectResolver::resolveRuleArtifact(const RulePtr &rule, Item *item,
rule->artifacts += artifact;
artifact->fileName = verbatimValue(item, "fileName");
artifact->fileTags = m_evaluator->fileTagsValue(item, "fileTags");
- artifact->alwaysUpdated = m_evaluator->boolValue(item, "alwaysUpdated", true);
+ artifact->alwaysUpdated = m_evaluator->boolValue(item, "alwaysUpdated");
if (artifact->alwaysUpdated)
*hasAlwaysUpdatedArtifact = true;
@@ -606,7 +606,7 @@ void ProjectResolver::resolveFileTagger(Item *item, ProjectContext *projectConte
void ProjectResolver::resolveTransformer(Item *item, ProjectContext *projectContext)
{
checkCancelation();
- if (!m_evaluator->boolValue(item, "condition", true)) {
+ if (!m_evaluator->boolValue(item, "condition")) {
m_logger.qbsTrace() << "[PR] transformer condition is false";
return;
}