aboutsummaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2012-11-28 11:00:23 +0100
committerLars Knoll <lars.knoll@digia.com>2012-11-28 12:31:20 +0100
commit4bd20c2ac36c59eb72acc71bc78ddbc058199666 (patch)
treeecf040f99ed7872ab578c4b3984204350c88ba4e /main.cpp
parent61460c785907049567120e07dcadd714fff93cdb (diff)
Throw a SyntaxError instead of printing an error message.
Change-Id: I94ef8a4f2bea80bc3689b104e381a9dc134439fa Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/main.cpp b/main.cpp
index bd1bcea89e..efe2b75b9b 100644
--- a/main.cpp
+++ b/main.cpp
@@ -108,10 +108,32 @@ struct TestHarnessError: FunctionObject
static void showException(QQmlJS::VM::ExecutionContext *ctx)
{
- if (QQmlJS::VM::ErrorObject *e = ctx->engine->exception.asErrorObject())
- std::cerr << "Uncaught exception: " << qPrintable(e->value.toString(ctx)->toQString()) << std::endl;
- else
+ QQmlJS::VM::ErrorObject *e = ctx->engine->exception.asErrorObject();
+ if (!e) {
std::cerr << "Uncaught exception: " << qPrintable(ctx->engine->exception.toString(ctx)->toQString()) << std::endl;
+ return;
+ }
+
+ if (QQmlJS::VM::SyntaxErrorObject *err = e->asSyntaxError()) {
+ QQmlJS::VM::DiagnosticMessage *msg = err->message();
+ if (!msg) {
+ std::cerr << "Uncaught exception: Syntax error" << std::endl;
+ return;
+ }
+
+ for (; msg; msg = msg->next) {
+ if (msg->fileName)
+ std::cerr << qPrintable(msg->fileName->toQString());
+ std::cerr << ':' << msg->startLine << ':' << msg->startColumn << ": ";
+ if (msg->type == QQmlJS::VM::DiagnosticMessage::Error)
+ std::cerr << "error";
+ else
+ std::cerr << "warning";
+ std::cerr << ": " << qPrintable(msg->message->toQString()) << std::endl;
+ }
+ } else {
+ std::cerr << "Uncaught exception: " << qPrintable(e->value.toString(ctx)->toQString()) << std::endl;
+ }
}
#ifndef QMLJS_NO_LLVM