aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmljavascriptexpression.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-05-20 20:27:16 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-05-21 10:05:22 +0200
commitb7d79a0c271c9541c96be4028ee76eb304e06bf5 (patch)
tree5931c074dc6537e874bc87f9b60151a52390367d /src/qml/qml/qqmljavascriptexpression.cpp
parentd0d9e6458f1ce90ca4985d7cf03e7bfae48d664a (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.cpp38
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());