283QDebug operator<<(QDebug debug,
const QQmlError &error)
285 debug << qPrintable(error.toString());
287 QUrl url = error.url();
289 if (error.line() > 0 && (url.scheme() == QLatin1String(
"file") || url.scheme() == QLatin1String(
"qrc"))) {
290 QString file = QQmlFile::urlToLocalFileOrQrc(url);
292 if (f.open(QIODevice::ReadOnly)) {
293 QByteArray data = f.readAll();
294 QTextStream stream(data, QIODevice::ReadOnly);
295 const QString code = stream.readAll();
296 const auto lines = QStringView{code}.split(QLatin1Char(
'\n'));
298 if (lines.size() >= error.line()) {
299 const QStringView &line = lines.at(error.line() - 1);
300 debug <<
"\n " << line.toLocal8Bit().constData();
302 if(error.column() > 0) {
303 int column = qMax(0, error.column() - 1);
304 column = qMin(column, line.size());
308 for (
int i = 0; i < column; ++i) {
309 const QChar ch = line.at(i);
311 ind.append(ch.unicode());
316 debug <<
"\n " << ind.constData();