diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-10-13 17:58:07 +0200 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-10-14 12:03:44 +0200 |
commit | f17d0e4a119a91b9dae7ed2d7aaa8897317c66e0 (patch) | |
tree | 7d234851a7b634bcda1c8d40a7d4d8e438afb191 /src/lib/corelib/language | |
parent | e0f246edf7a1e89f9ad30b1e5f6e340d21fc0435 (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.cpp | 5 | ||||
-rw-r--r-- | src/lib/corelib/language/testdata/erroneous/undefined_stringlist_element.qbs | 4 | ||||
-rw-r--r-- | src/lib/corelib/language/tst_language.cpp | 2 |
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") |