diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-07-24 17:37:12 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-07-25 12:18:24 +0200 |
| commit | bfae7b1363558de6f60538204f7e326293922ab8 (patch) | |
| tree | aa2bd6d5aa119054bfa3e9ad4c381f5a1736fe5b | |
| parent | daabd183bfc32301bec50a40275152bba66d71da (diff) | |
| download | qbs-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.cpp | 14 | ||||
| -rw-r--r-- | src/lib/language/projectresolver.cpp | 16 |
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; } |
