diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-07 13:15:21 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2017-07-10 14:32:21 +0000 |
commit | aa1c500411bf81743d0588c14c777c98d4ea1157 (patch) | |
tree | cacc51a896f9a88a0d3abfb8cfce0d79424b04e9 /src/lib/corelib/language/evaluatorscriptclass.cpp | |
parent | 1f99f83835f9e094264299e9f0124db1aa730c41 (diff) |
Centralize path property resolution
We had two places where path properties were resolved. Centralize the
code in the EvaluatorScriptClass.
Change-Id: Ia8a34af912738f381fbe6016f8af1c05c3c746ed
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/evaluatorscriptclass.cpp')
-rwxr-xr-x | src/lib/corelib/language/evaluatorscriptclass.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index ba7df02b5..a4862a958 100755 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -429,10 +429,10 @@ void EvaluatorScriptClass::collectValuesFromNextChain(const EvaluationData *data } } -static QString overriddenSourceDirectory(const Item *item) +static QString overriddenSourceDirectory(const Item *item, const QString &defaultValue) { const VariantValuePtr v = item->variantProperty(QLatin1String("_qbs_sourceDir")); - return v ? v->value().toString() : QString(); + return v ? v->value().toString() : defaultValue; } static void makeTypeError(const ErrorInfo &error, QScriptValue &v) @@ -449,7 +449,8 @@ static void makeTypeError(const PropertyDeclaration &decl, const CodeLocation &l makeTypeError(error, v); } -static void convertToPropertyType(const Item *item, const PropertyDeclaration& decl, +static void convertToPropertyType(const QString &pathPropertiesBaseDir, const Item *item, + const PropertyDeclaration& decl, const Value *value, QScriptValue &v) { if (value->type() == Value::VariantValueType && v.isUndefined() && !decl.isScalar()) { @@ -479,9 +480,10 @@ static void convertToPropertyType(const Item *item, const PropertyDeclaration& d makeTypeError(decl, location, v); break; } - const QString srcDir = overriddenSourceDirectory(item); + const QString srcDir = overriddenSourceDirectory(item, pathPropertiesBaseDir); if (!srcDir.isEmpty()) - v = v.engine()->toScriptValue(FileInfo::resolvePath(srcDir, v.toString())); + v = v.engine()->toScriptValue(QDir::cleanPath( + FileInfo::resolvePath(srcDir, v.toString()))); break; } case PropertyDeclaration::String: @@ -489,7 +491,7 @@ static void convertToPropertyType(const Item *item, const PropertyDeclaration& d makeTypeError(decl, location, v); break; case PropertyDeclaration::PathList: - srcDir = overriddenSourceDirectory(item); + srcDir = overriddenSourceDirectory(item, pathPropertiesBaseDir); // Fall-through. case PropertyDeclaration::StringList: { @@ -521,7 +523,8 @@ static void convertToPropertyType(const Item *item, const PropertyDeclaration& d } if (srcDir.isEmpty()) continue; - elem = v.engine()->toScriptValue(FileInfo::resolvePath(srcDir, elem.toString())); + elem = v.engine()->toScriptValue( + QDir::cleanPath(FileInfo::resolvePath(srcDir, elem.toString()))); v.setProperty(i, elem); } break; @@ -614,7 +617,7 @@ QScriptValue EvaluatorScriptClass::property(const QScriptValue &object, const QS converter.start(); const PropertyDeclaration decl = data->item->propertyDeclaration(name.toString()); - convertToPropertyType(data->item, decl, value.get(), result); + convertToPropertyType(m_pathPropertiesBaseDir, data->item, decl, value.get(), result); } if (debugProperties) |