QV4::ReturnedValue QQmlJavaScriptExpression::qmlBinding(QQmlContextData *ctxt, QObject *qmlScope, const QString &code, const QString &filename, quint16 line, QV4::PersistentValue *qmlscope) { QQmlEngine *engine = ctxt->engine; QQmlEnginePrivate *ep = QQmlEnginePrivate::get(engine); QV4::ExecutionEngine *v4 = QV8Engine::getV4(ep->v8engine()); QV4::ExecutionContext *ctx = v4->currentContext(); QV4::Scope scope(v4); QV4::ScopedObject qmlScopeObject(scope, QV4::QmlContextWrapper::qmlScope(ep->v8engine(), ctxt, qmlScope)); QV4::Script script(v4, qmlScopeObject, code, filename, line); QV4::ScopedValue result(scope); script.parse(); if (!v4->hasException) result = script.qmlBinding(); if (v4->hasException) { QQmlError error = QV4::ExecutionEngine::catchExceptionAsQmlError(ctx); if (error.description().isEmpty()) error.setDescription(QLatin1String("Exception occurred during function evaluation")); if (error.line() == -1) error.setLine(line); if (error.url().isEmpty()) error.setUrl(QUrl::fromLocalFile(filename)); error.setObject(qmlScope); ep->warning(error); return QV4::Encode::undefined(); } if (qmlscope) *qmlscope = qmlScopeObject; return result.asReturnedValue(); }
void tst_qqmlerror::copy() { QQmlError error; error.setUrl(QUrl("http://www.qt-project.org/main.qml")); error.setDescription("An Error"); error.setLine(92); error.setColumn(13); QQmlError error2(error); QQmlError error3; error3 = error; error.setUrl(QUrl("http://www.qt-project.org/main.qml")); error.setDescription("Another Error"); error.setLine(2); error.setColumn(33); QCOMPARE(error.url(), QUrl("http://www.qt-project.org/main.qml")); QCOMPARE(error.description(), QString("Another Error")); QCOMPARE(error.line(), 2); QCOMPARE(error.column(), 33); QCOMPARE(error2.url(), QUrl("http://www.qt-project.org/main.qml")); QCOMPARE(error2.description(), QString("An Error")); QCOMPARE(error2.line(), 92); QCOMPARE(error2.column(), 13); QCOMPARE(error3.url(), QUrl("http://www.qt-project.org/main.qml")); QCOMPARE(error3.description(), QString("An Error")); QCOMPARE(error3.line(), 92); QCOMPARE(error3.column(), 13); }
static QString qmlErrorToString(const QQmlError &error) { return QStringLiteral("%1:%2:%3: %4") .arg(error.url().toString()) .arg(error.line()) .arg(error.column()) .arg(error.description()); }
foreach(QQmlError warning, warnings) { QString url; if (warning.url().isLocalFile()) url = warning.url().toLocalFile(); else url = warning.url().toString(); qCWarning(sambaLogQml, "%s:%d: %s", url.toLocal8Bit().constData(), warning.line(), warning.description().toLocal8Bit().constData()); }
void tst_qqmlerror::description() { QQmlError error; QCOMPARE(error.description(), QString()); error.setDescription("An Error"); QCOMPARE(error.description(), QString("An Error")); QQmlError error2 = error; QCOMPARE(error2.description(), QString("An Error")); error.setDescription("Another Error"); QCOMPARE(error.description(), QString("Another Error")); QCOMPARE(error2.description(), QString("An Error")); }
void QQmlDirParser::setError(const QQmlError &e) { _errors.clear(); reportError(e.line(), e.column(), e.description()); }