diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2017-11-06 09:36:28 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2017-11-06 08:52:29 +0000 |
commit | 38715491eef958be049b15b37276fcb708738a4b (patch) | |
tree | 90e963cd725f3024788f2765d5994c0f0ac1e13d | |
parent | 1202dd60e6e40af9cfae7cb09c17ee418fa5ada4 (diff) |
Fix handling of empty JS files
We would crash on those.
Change-Id: I06ddfacfcea53d7a65cbd30a1b697cf09e28b82d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r-- | src/lib/corelib/language/scriptimporter.cpp | 3 | ||||
-rw-r--r-- | tests/auto/language/testdata/empty-js-file.js | 0 | ||||
-rw-r--r-- | tests/auto/language/testdata/empty-js-file.qbs | 4 | ||||
-rw-r--r-- | tests/auto/language/tst_language.cpp | 17 | ||||
-rw-r--r-- | tests/auto/language/tst_language.h | 1 |
5 files changed, 24 insertions, 1 deletions
diff --git a/src/lib/corelib/language/scriptimporter.cpp b/src/lib/corelib/language/scriptimporter.cpp index 9b925004f..f8c2c46c7 100644 --- a/src/lib/corelib/language/scriptimporter.cpp +++ b/src/lib/corelib/language/scriptimporter.cpp @@ -60,7 +60,8 @@ public: m_first = true; m_barrier = false; m_suffix += QLatin1String("\nreturn {"); - node->accept(this); + if (node) + node->accept(this); m_suffix += QLatin1String("}})()"); } diff --git a/tests/auto/language/testdata/empty-js-file.js b/tests/auto/language/testdata/empty-js-file.js new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/tests/auto/language/testdata/empty-js-file.js diff --git a/tests/auto/language/testdata/empty-js-file.qbs b/tests/auto/language/testdata/empty-js-file.qbs new file mode 100644 index 000000000..405a657c3 --- /dev/null +++ b/tests/auto/language/testdata/empty-js-file.qbs @@ -0,0 +1,4 @@ +import "empty-js-file.js" as Empty + +Product { +} diff --git a/tests/auto/language/tst_language.cpp b/tests/auto/language/tst_language.cpp index 0c6e1f48d..462a3e2af 100644 --- a/tests/auto/language/tst_language.cpp +++ b/tests/auto/language/tst_language.cpp @@ -553,6 +553,23 @@ void TestLanguage::derivedSubProject() QCOMPARE(exceptionCaught, false); } +void TestLanguage::emptyJsFile() +{ + bool exceptionCaught = false; + try { + SetupProjectParameters params = defaultParameters; + params.setProjectFilePath(testProject("empty-js-file.qbs")); + const TopLevelProjectPtr project = loader->loadProject(params); + QVERIFY(!!project); + const QHash<QString, ResolvedProductPtr> products = productsFromProject(project); + QCOMPARE(products.count(), 1); + } catch (const ErrorInfo &e) { + exceptionCaught = true; + qDebug() << e.toString(); + } + QCOMPARE(exceptionCaught, false); +} + void TestLanguage::enumerateProjectProperties() { bool exceptionCaught = false; diff --git a/tests/auto/language/tst_language.h b/tests/auto/language/tst_language.h index 9cf216360..46ae657b3 100644 --- a/tests/auto/language/tst_language.h +++ b/tests/auto/language/tst_language.h @@ -90,6 +90,7 @@ private slots: void delayedError_data(); void dependencyOnAllProfiles(); void derivedSubProject(); + void emptyJsFile(); void enumerateProjectProperties(); void environmentVariable(); void erroneousFiles_data(); |