aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/buildgraph/qtmocscanner.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2014-03-27 11:20:35 +0100
committerChristian Kandeler <christian.kandeler@digia.com>2014-03-27 15:44:07 +0100
commitc1a2a3b82f3c017b07db908b934f2ace8e14a7e0 (patch)
tree45a8178276d5ddaff78608ff9feb885122ce796f /src/lib/corelib/buildgraph/qtmocscanner.cpp
parent74dddf4234b92b50ce940e282bd6497d4c04edb2 (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.cpp16
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();
}