diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-05-20 20:27:16 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-05-21 10:05:22 +0200 |
commit | b7d79a0c271c9541c96be4028ee76eb304e06bf5 (patch) | |
tree | 5931c074dc6537e874bc87f9b60151a52390367d /src/qml/qml/qqmljavascriptexpression.cpp | |
parent | d0d9e6458f1ce90ca4985d7cf03e7bfae48d664a (diff) |
Cleanup QQmlDelayedError
Remove dependency onto v8::Message and simplify conversion from
QV4::Exception to QQmlError.
Change-Id: Icfdfd7a2749210b2df9fda6cd5de94114b8adcfa
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmljavascriptexpression.cpp')
-rw-r--r-- | src/qml/qml/qqmljavascriptexpression.cpp | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/src/qml/qml/qqmljavascriptexpression.cpp b/src/qml/qml/qqmljavascriptexpression.cpp index 3c0e8d8919..b1c68caf99 100644 --- a/src/qml/qml/qqmljavascriptexpression.cpp +++ b/src/qml/qml/qqmljavascriptexpression.cpp @@ -63,11 +63,6 @@ bool QQmlDelayedError::addError(QQmlEnginePrivate *e) return true; } -void QQmlDelayedError::setMessage(v8::Handle<v8::Message> message) -{ - m_message = message.get(); -} - void QQmlDelayedError::setErrorLocation(const QUrl &url, quint16 line, quint16 column) { m_error.setUrl(url); @@ -80,22 +75,15 @@ void QQmlDelayedError::setErrorDescription(const QString &description) m_error.setDescription(description); } -/* - Converting from a message to an error is relatively expensive. - - We don't want to do this work for transient exceptions (exceptions - that occur during startup because of the order of binding - execution, but have gone away by the time startup has finished), so we - delay conversion until it is required for displaying the error. -*/ -void QQmlDelayedError::convertMessageToError(QQmlEngine *engine) const +void QQmlDelayedError::setError(const QV4::Exception &e) { - if (!!m_message && engine) { - QQmlExpressionPrivate::exceptionToError(v8::Handle<v8::Message>(m_message.data()), m_error); - m_message.reset(); - } + m_error.setDescription(e.value().toQString()); + m_error.setUrl(e.file()); + m_error.setLine(e.lineNumber()); + m_error.setColumn(-1); } + QQmlJavaScriptExpression::QQmlJavaScriptExpression(VTable *v) : m_vtable(v) { @@ -298,8 +286,10 @@ void QQmlJavaScriptExpression::clearError() QQmlError QQmlJavaScriptExpression::error(QQmlEngine *engine) const { - if (m_vtable.hasValue()) return m_vtable.constValue()->error(engine); - else return QQmlError(); + if (m_vtable.hasValue()) + return m_vtable.constValue()->error(); + else + return QQmlError(); } QQmlDelayedError *QQmlJavaScriptExpression::delayedError() @@ -307,6 +297,14 @@ QQmlDelayedError *QQmlJavaScriptExpression::delayedError() return &m_vtable.value(); } +void QQmlJavaScriptExpression::exceptionToError(const QV4::Exception &e, QQmlError &error) +{ + error.setUrl(e.file()); + error.setLine(e.lineNumber()); + error.setColumn(-1); + error.setDescription(e.value().toQString()); +} + void QQmlJavaScriptExpression::exceptionToError(v8::Handle<v8::Message> message, QQmlError &error) { Q_ASSERT(!message.IsEmpty()); |