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