diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2016-10-10 17:44:19 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2016-10-14 14:42:07 +0000 |
commit | 47b575a3b3bf7dc104e1b91babc986577a63ff37 (patch) | |
tree | e6fedd69fab4011a29a32f3cc912fa52d51c1a60 /src | |
parent | 1e60fab274e722efa01bce67c9acc56627fcc801 (diff) |
Convert null variant values to empty lists
... if their declared type is a list. This is a workaround for
QTBUG-51237.
Change-Id: Ie9e02f5fd125ce73b993e59af0e3dc2b47fe14c1
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/language/evaluatorscriptclass.cpp | 10 | ||||
-rw-r--r-- | src/lib/corelib/language/projectresolver.cpp | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index 8230d3990..aa07935dc 100644 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -398,8 +398,14 @@ static QString overriddenSourceDirectory(const Item *item) } inline void convertToPropertyType(const Item *item, const PropertyDeclaration::Type t, - QScriptValue &v) + Value::Type valueType, QScriptValue &v) { + if (valueType == Value::VariantValueType && v.isUndefined() + && (t == PropertyDeclaration::StringList || t == PropertyDeclaration::PathList)) { + v = v.engine()->newArray(); // QTBUG-51237 + return; + } + if (v.isUndefined() || v.isError()) return; switch (t) { @@ -497,7 +503,7 @@ QScriptValue EvaluatorScriptClass::property(const QScriptValue &object, const QS converter.start(); const PropertyDeclaration decl = data->item->propertyDeclaration(name.toString()); - convertToPropertyType(data->item, decl.type(), result); + convertToPropertyType(data->item, decl.type(), value->type(), result); } if (debugProperties) diff --git a/src/lib/corelib/language/projectresolver.cpp b/src/lib/corelib/language/projectresolver.cpp index e712aff49..bfb2eb74c 100644 --- a/src/lib/corelib/language/projectresolver.cpp +++ b/src/lib/corelib/language/projectresolver.cpp @@ -1129,7 +1129,12 @@ QVariantMap ProjectResolver::evaluateProperties(Item *item, Item *propertiesCont if (result.contains(it.key())) break; VariantValuePtr vvp = it.value().staticCast<VariantValue>(); - result[it.key()] = vvp->value(); + QVariant v = vvp->value(); + + if (v.isNull() && !item->propertyDeclaration(it.key()).isScalar()) // QTBUG-51237 + v = QStringList(); + + result[it.key()] = v; break; } } |