diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-08-08 16:59:32 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-20 14:20:44 +0200 |
commit | e43b6bd9c7a3d584e488cd3c84f9deb2d8955b64 (patch) | |
tree | 0d1a33571d2f75630db3dfe84b1a4ead23f87958 /src/qml/jsruntime/qv4errorobject.cpp | |
parent | 42b2685d0069e746dee344054831b6f08e482860 (diff) |
Remove QV4::DiagnosticMessage
QQmlError provides the same functionality, so let's rather
use that where required. Remove the dependency of
codegen onto the ExecutionContext that was only
required for error handling.
Change-Id: Ib0b61c0e138f89ff989c32996c93c339e4b62223
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4errorobject.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4errorobject.cpp | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/qml/jsruntime/qv4errorobject.cpp b/src/qml/jsruntime/qv4errorobject.cpp index 516a4d37f8..508e9c118b 100644 --- a/src/qml/jsruntime/qv4errorobject.cpp +++ b/src/qml/jsruntime/qv4errorobject.cpp @@ -93,6 +93,32 @@ ErrorObject::ErrorObject(ExecutionEngine *engine, const Value &message, ErrorTyp } } +ErrorObject::ErrorObject(ExecutionEngine *engine, const QString &message, const QString &fileName, int line, int column, ErrorObject::ErrorType t) + : Object(engine) + , stack(0) +{ + type = Type_ErrorObject; + vtbl = &static_vtbl; + subtype = t; + defineAccessorProperty(engine, QStringLiteral("stack"), ErrorObject::method_get_stack, 0); + + defineDefaultProperty(engine, QStringLiteral("name"), Value::fromString(engine, className())); + + stackTrace = engine->stackTrace(); + ExecutionEngine::StackFrame frame; + frame.source = fileName; + frame.line = line; + frame.column = column; + stackTrace.prepend(frame); + + if (!stackTrace.isEmpty()) { + defineDefaultProperty(engine, QStringLiteral("fileName"), Value::fromString(engine, stackTrace.at(0).source)); + defineDefaultProperty(engine, QStringLiteral("lineNumber"), Value::fromInt32(stackTrace.at(0).line)); + } + + defineDefaultProperty(engine, QStringLiteral("message"), Value::fromString(engine->newString(message))); +} + Value ErrorObject::method_get_stack(SimpleCallContext *ctx) { ErrorObject *This = ctx->thisObject.asErrorObject(); @@ -131,34 +157,18 @@ DEFINE_MANAGED_VTABLE(SyntaxErrorObject); SyntaxErrorObject::SyntaxErrorObject(ExecutionEngine *engine, const Value &msg) : ErrorObject(engine, msg, SyntaxError) - , msg(0) { vtbl = &static_vtbl; prototype = engine->syntaxErrorPrototype; } -SyntaxErrorObject::SyntaxErrorObject(ExecutionEngine *engine, const QString &msg) - : ErrorObject(engine, Value::fromString(engine, msg), SyntaxError) - , msg(0) +SyntaxErrorObject::SyntaxErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber) + : ErrorObject(engine, msg, fileName, lineNumber, columnNumber, SyntaxError) { vtbl = &static_vtbl; prototype = engine->syntaxErrorPrototype; } -SyntaxErrorObject::SyntaxErrorObject(ExecutionContext *ctx, DiagnosticMessage *message) - : ErrorObject(ctx->engine, message ? Value::fromString(message->buildFullMessage(ctx)) : ctx->argument(0), SyntaxError) - , msg(message) -{ - vtbl = &static_vtbl; - prototype = ctx->engine->syntaxErrorPrototype; - if (message) { - defineDefaultProperty(ctx->engine, QStringLiteral("fileName"), Value::fromString(ctx, message->fileName)); - defineDefaultProperty(ctx->engine, QStringLiteral("lineNumber"), Value::fromInt32(message->startLine)); - } -} - - - EvalErrorObject::EvalErrorObject(ExecutionEngine *engine, const Value &message) : ErrorObject(engine, message, EvalError) { @@ -189,12 +199,10 @@ ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const QStrin prototype = engine->referenceErrorPrototype; } -ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber) - : ErrorObject(engine, Value::fromString(engine, msg), ReferenceError) +ReferenceErrorObject::ReferenceErrorObject(ExecutionEngine *engine, const QString &msg, const QString &fileName, int lineNumber, int columnNumber) + : ErrorObject(engine, msg, fileName, lineNumber, columnNumber, ReferenceError) { prototype = engine->referenceErrorPrototype; - defineDefaultProperty(engine, QStringLiteral("fileName"), Value::fromString(engine->rootContext, fileName)); - defineDefaultProperty(engine, QStringLiteral("lineNumber"), Value::fromInt32(lineNumber)); } TypeErrorObject::TypeErrorObject(ExecutionEngine *engine, const Value &message) |