aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-10-13 17:58:07 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-10-14 12:03:44 +0200
commitf17d0e4a119a91b9dae7ed2d7aaa8897317c66e0 (patch)
tree7d234851a7b634bcda1c8d40a7d4d8e438afb191 /src/lib/corelib/language
parente0f246edf7a1e89f9ad30b1e5f6e340d21fc0435 (diff)
yield error on undefined elements in string lists
Instead of converting undefined values in string list properties to the string "undefined", we yield an error. Change-Id: Id370dafa67061f1f1a86bbeaaeed152be6fc751f Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/language')
-rw-r--r--src/lib/corelib/language/evaluator.cpp5
-rw-r--r--src/lib/corelib/language/testdata/erroneous/undefined_stringlist_element.qbs4
-rw-r--r--src/lib/corelib/language/tst_language.cpp2
3 files changed, 11 insertions, 0 deletions
diff --git a/src/lib/corelib/language/evaluator.cpp b/src/lib/corelib/language/evaluator.cpp
index 692c1254e..c7720cf3b 100644
--- a/src/lib/corelib/language/evaluator.cpp
+++ b/src/lib/corelib/language/evaluator.cpp
@@ -132,6 +132,11 @@ static QStringList toStringList(const QScriptValue &scriptValue,
QScriptValue elem = scriptValue.property(i++);
if (!elem.isValid())
break;
+ if (elem.isUndefined()) {
+ throw ErrorInfo(Tr::tr("Array element at index %1 is undefined. String expected.")
+ .arg(i - 1),
+ item->property(propertyName)->location());
+ }
if (elem.isArray() || elem.isObject()) {
// Let's assume all other JS types are convertible to string.
throw ErrorInfo(Tr::tr("Expected array element of type String at index %1.")
diff --git a/src/lib/corelib/language/testdata/erroneous/undefined_stringlist_element.qbs b/src/lib/corelib/language/testdata/erroneous/undefined_stringlist_element.qbs
new file mode 100644
index 000000000..8e33cd763
--- /dev/null
+++ b/src/lib/corelib/language/testdata/erroneous/undefined_stringlist_element.qbs
@@ -0,0 +1,4 @@
+Product {
+ property string blubb
+ files: ["foo", blubb, "bar"]
+}
diff --git a/src/lib/corelib/language/tst_language.cpp b/src/lib/corelib/language/tst_language.cpp
index d76006df4..4657ae389 100644
--- a/src/lib/corelib/language/tst_language.cpp
+++ b/src/lib/corelib/language/tst_language.cpp
@@ -358,6 +358,8 @@ void TestLanguage::erroneousFiles_data()
<< "Cycle detected while loading subproject file 'subproject_cycle.qbs'.";
QTest::newRow("invalid_stringlist_element")
<< "Expected array element of type String at index 1.";
+ QTest::newRow("undefined_stringlist_element")
+ << "Array element at index 1 is undefined. String expected.";
QTest::newRow("undeclared_item")
<< "Item 'cpp' is not declared.";
QTest::newRow("undeclared_property")