176 QList<QQmlError> errors = d->errors;
178 QQmlEngine *engine =
nullptr;
180 if (!d->buffer.isEmpty()) {
182 error.setMessageType(d->msgType);
184 QObject *object =
const_cast<QObject *>(d->object);
189 QObject *objectWithEngine = object;
190 while (objectWithEngine) {
191 engine = qmlEngine(objectWithEngine);
194 objectWithEngine = objectWithEngine->parent();
197 if (!objectWithEngine || objectWithEngine == object) {
198 d->buffer.prepend(QLatin1String(
"QML ") + QQmlMetaType::prettyTypeName(object) + QLatin1String(
": "));
200 d->buffer.prepend(QLatin1String(
"QML ") + QQmlMetaType::prettyTypeName(objectWithEngine)
201 + QLatin1String(
" (parent or ancestor of ") + QQmlMetaType::prettyTypeName(object) + QLatin1String(
"): "));
204 QQmlData *ddata = QQmlData::get(objectWithEngine ? objectWithEngine : object,
false);
205 if (ddata && ddata->outerContext) {
206 error.setUrl(ddata->outerContext->url());
207 error.setLine(qmlConvertSourceCoordinate<quint16,
int>(ddata->lineNumber));
208 error.setColumn(qmlConvertSourceCoordinate<quint16,
int>(ddata->columnNumber));
212 error.setDescription(d->buffer);
214 errors.prepend(error);
217 QQmlEnginePrivate::warning(engine, errors);