From 35e36f75b77c6e843e94053a17dc2c5940dfd17f Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 24 Mar 2010 13:22:12 +0100
Subject: [PATCH] QmlDesigner: Fix crash in TestCore::testRewriterForArrayMagic

Qml allows property lists to be written as single properties, i.e.

  states: State {}

However, for the QmlDesigner model states is a list. Take care of this
in the texttomodelmerger.

Reviewed-by: Erik Verbruggen
---
 src/plugins/qmldesigner/core/model/texttomodelmerger.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
index 87c31bfad37..efeb8794ba6 100644
--- a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
@@ -382,7 +382,12 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
             } else {
                 if (isValidPropertyForNode(modelNode, astPropertyName)) {
                     AbstractProperty modelProperty = modelNode.property(astPropertyName);
-                    syncNodeProperty(modelProperty, binding, context, differenceHandler);
+                    if (modelProperty.metaInfo().isListProperty()) {
+                        NodeListProperty listProperty = modelProperty.toNodeListProperty();
+                        syncNodeListProperty(listProperty, QList<QmlJS::AST::UiObjectMember*>() << member, context, differenceHandler);
+                    } else {
+                        syncNodeProperty(modelProperty, binding, context, differenceHandler);
+                    }
                     modelPropertyNames.remove(astPropertyName);
                 } else {
                     qWarning() << "Skipping invalid node property" << astPropertyName
-- 
GitLab