177 QList<QQmlError> errors = d->errors;
179 QQmlEngine *engine =
nullptr;
181 if (!d->buffer.isEmpty()) {
183 error.setMessageType(d->msgType);
185 QObject *object =
const_cast<QObject *>(d->object);
190 QObject *objectWithEngine = object;
191 while (objectWithEngine) {
192 engine = qmlEngine(objectWithEngine);
195 objectWithEngine = objectWithEngine->parent();
198 if (!objectWithEngine || objectWithEngine == object) {
199 d->buffer.prepend(QLatin1String(
"QML ") + QQmlMetaType::prettyTypeName(object) + QLatin1String(
": "));
201 d->buffer.prepend(QLatin1String(
"QML ") + QQmlMetaType::prettyTypeName(objectWithEngine)
202 + QLatin1String(
" (parent or ancestor of ") + QQmlMetaType::prettyTypeName(object) + QLatin1String(
"): "));
205 QQmlData *ddata = QQmlData::get(objectWithEngine ? objectWithEngine : object,
false);
206 if (ddata && ddata->outerContext) {
207 error.setUrl(ddata->outerContext->url());
208 error.setLine(qmlConvertSourceCoordinate<quint16,
int>(ddata->lineNumber));
209 error.setColumn(qmlConvertSourceCoordinate<quint16,
int>(ddata->columnNumber));
213 error.setDescription(d->buffer);
215 errors.prepend(error);
218 QQmlEnginePrivate::warning(engine, errors);