diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 75759b26424fd0fe33a37e002e4ecf096b52eb9a..1ae028c81525c01f19c1a216196d21ad7ab45c0f 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -98,17 +98,29 @@ void Check::visitQmlObject(Node *ast, UiQualifiedId *typeId,
     _context.setQmlScopeObject(scopeObject);
 
 #ifndef NO_DECLARATIVE_BACKEND
-    // check if the object has a Qt.PropertyChanges ancestor
+    // check if the object has a Qt.ListElement ancestor
     const ObjectValue *prototype = scopeObject->prototype(&_context);
     while (prototype) {
         if (const QmlObjectValue *qmlMetaObject = dynamic_cast<const QmlObjectValue *>(prototype)) {
             // ### Also check for Qt package. Involves changes in QmlObjectValue.
-            if (qmlMetaObject->qmlTypeName() == QLatin1String("PropertyChanges"))
+            if (qmlMetaObject->qmlTypeName() == QLatin1String("ListElement")) {
+                _allowAnyProperty = true;
                 break;
+            }
         }
         prototype = prototype->prototype(&_context);
     }
 
+    // check if the object has a Qt.PropertyChanges ancestor
+    prototype = scopeObject->prototype(&_context);
+    while (prototype) {
+        if (const QmlObjectValue *qmlMetaObject = dynamic_cast<const QmlObjectValue *>(prototype)) {
+            // ### Also check for Qt package. Involves changes in QmlObjectValue.
+            if (qmlMetaObject->qmlTypeName() == QLatin1String("PropertyChanges"))
+                break;
+        }
+        prototype = prototype->prototype(&_context);
+    }
     // find the target script binding
     if (prototype && initializer) {
         for (UiObjectMemberList *m = initializer->members; m; m = m->next) {