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()); }
QDebug operator<<(QDebug debug, const QQmlError &error) { debug << qPrintable(error.toString()); QUrl url = error.url(); if (error.line() > 0 && url.scheme() == QLatin1String("file")) { QString file = url.toLocalFile(); QFile f(file); if (f.open(QIODevice::ReadOnly)) { QByteArray data = f.readAll(); QTextStream stream(data, QIODevice::ReadOnly); #ifndef QT_NO_TEXTCODEC stream.setCodec("UTF-8"); #endif const QString code = stream.readAll(); const QStringList lines = code.split(QLatin1Char('\n')); if (lines.count() >= error.line()) { const QString &line = lines.at(error.line() - 1); debug << "\n " << qPrintable(line); if(error.column() > 0) { int column = qMax(0, error.column() - 1); column = qMin(column, line.length()); QByteArray ind; ind.reserve(column); for (int i = 0; i < column; ++i) { const QChar ch = line.at(i); if (ch.isSpace()) ind.append(ch.unicode()); else ind.append(' '); } ind.append('^'); debug << "\n " << ind.constData(); } } } } return debug; }
void tst_qqmlerror::column() { QQmlError error; QCOMPARE(error.column(), -1); error.setColumn(16); QCOMPARE(error.column(), 16); QQmlError error2 = error; QCOMPARE(error2.column(), 16); error.setColumn(3); QCOMPARE(error.column(), 3); QCOMPARE(error2.column(), 16); }
void QQmlDirParser::setError(const QQmlError &e) { _errors.clear(); reportError(e.line(), e.column(), e.description()); }