aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2016-10-10 17:44:19 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2016-10-14 14:42:07 +0000
commit47b575a3b3bf7dc104e1b91babc986577a63ff37 (patch)
treee6fedd69fab4011a29a32f3cc912fa52d51c1a60 /src
parent1e60fab274e722efa01bce67c9acc56627fcc801 (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.cpp10
-rw-r--r--src/lib/corelib/language/projectresolver.cpp7
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;
}
}