diff options
author | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-03-27 11:20:35 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-03-27 15:44:07 +0100 |
commit | c1a2a3b82f3c017b07db908b934f2ace8e14a7e0 (patch) | |
tree | 45a8178276d5ddaff78608ff9feb885122ce796f /src/lib/corelib/buildgraph/qtmocscanner.cpp | |
parent | 74dddf4234b92b50ce940e282bd6497d4c04edb2 (diff) |
catch exceptions in JS callback
Task-number: QTCREATORBUG-11866
Change-Id: Ieb952bf92cc7837e4a59d147b63b3533ba63e1cd
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Diffstat (limited to 'src/lib/corelib/buildgraph/qtmocscanner.cpp')
-rw-r--r-- | src/lib/corelib/buildgraph/qtmocscanner.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/corelib/buildgraph/qtmocscanner.cpp b/src/lib/corelib/buildgraph/qtmocscanner.cpp index bf8558c3b..f4dd1bbcb 100644 --- a/src/lib/corelib/buildgraph/qtmocscanner.cpp +++ b/src/lib/corelib/buildgraph/qtmocscanner.cpp @@ -32,7 +32,7 @@ #include "artifact.h" #include "productbuilddata.h" #include "scanresultcache.h" -#include <tools/qbsassert.h> +#include <logging/translator.h> #include <tools/scannerpluginmanager.h> #include <tools/scripttools.h> @@ -140,14 +140,24 @@ QScriptValue QtMocScanner::js_apply(QScriptContext *ctx, QScriptEngine *engine, return that->apply(engine, attachedPointer<Artifact>(input)); } +static QScriptValue scannerCountError(QScriptEngine *engine, int scannerCount, + const QString &fileTag) +{ + return engine->currentContext()->throwError( + Tr::tr("There are %1 scanners for the file tag %2. " + "Expected is exactly one.").arg(scannerCount).arg(fileTag)); +} + QScriptValue QtMocScanner::apply(QScriptEngine *engine, const Artifact *artifact) { if (!m_cppScanner) { QList<ScannerPlugin *> scanners = ScannerPluginManager::scannersForFileTag("cpp"); - QBS_CHECK(scanners.count() == 1); + if (scanners.count() != 1) + return scannerCountError(engine, scanners.count(), QLatin1String("cpp")); m_cppScanner = scanners.first(); scanners = ScannerPluginManager::scannersForFileTag("hpp"); - QBS_CHECK(scanners.count() == 1); + if (scanners.count() != 1) + return scannerCountError(engine, scanners.count(), QLatin1String("hpp")); m_hppScanner = scanners.first(); } |