diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp index c9e1c528331c78f8e66ca18972669dde9e3216da..b3f11d2b20bf3d55cbb663050078676b4f339adc 100644 --- a/src/libs/qmljs/qmljsinterpreter.cpp +++ b/src/libs/qmljs/qmljsinterpreter.cpp @@ -2114,9 +2114,11 @@ void CppQmlTypes::setPrototypes(QmlObjectValue *object) FakeMetaObject::ConstPtr fmo = object->metaObject(); // resolve attached type - if (!fmo->attachedTypeName().isEmpty()) { + // don't do it if the attached type name is the object itself (happens for QDeclarativeKeysAttached) + if (!fmo->attachedTypeName().isEmpty() + && fmo->className() != fmo->attachedTypeName()) { QmlObjectValue *attachedObject = typeByCppName(fmo->attachedTypeName()); - if (attachedObject) + if (attachedObject && attachedObject != object) object->setAttachedType(attachedObject); }