From 715aafaba5e282dd0df19676ebd7509122662f70 Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 21 Jul 2010 09:19:51 +0200
Subject: [PATCH] QmlJS Rewriter: Allow disambiguation of where ObjectMember
 should be added to

With 700975ade3bf one could specify that a UiObjectMember should be inserted
after another one. But 0 'the default parameter' was ambiguous in that
either you want to have it inserted at the beginning of the member list,
or the heuristics should be applied.

Make this explicit by providing two methods.
---
 src/libs/qmljs/qmljsrewriter.cpp | 24 +++++++++++++++++-------
 src/libs/qmljs/qmljsrewriter.h   | 10 ++++++++--
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp
index 23a1c115086..7586f74f4c2 100644
--- a/src/libs/qmljs/qmljsrewriter.cpp
+++ b/src/libs/qmljs/qmljsrewriter.cpp
@@ -52,16 +52,23 @@ Rewriter::Rewriter(const QString &originalText,
     Q_ASSERT(changeSet);
 }
 
+void Rewriter::addBinding(AST::UiObjectInitializer *ast,
+                          const QString &propertyName,
+                          const QString &propertyValue,
+                          BindingType bindingType)
+{
+    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members,
+                                                                propertyName,
+                                                                m_propertyOrder);
+    addBinding(ast, propertyName, propertyValue, bindingType, insertAfter);
+}
+
 void Rewriter::addBinding(AST::UiObjectInitializer *ast,
                           const QString &propertyName,
                           const QString &propertyValue,
                           BindingType bindingType,
                           UiObjectMemberList *insertAfter)
 {
-    if (!insertAfter)
-        insertAfter = searchMemberToInsertAfter(ast->members,
-                                                propertyName,
-                                                m_propertyOrder);
     SourceLocation endOfPreviousMember;
     SourceLocation startOfNextMember;
 
@@ -570,11 +577,14 @@ void Rewriter::appendToArrayBinding(UiArrayBinding *arrayBinding,
     m_changeSet->insert(insertionPoint, QLatin1String(",\n") + content);
 }
 
-void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter)
+void Rewriter::addObject(UiObjectInitializer *ast, const QString &content)
 {
-    if (!insertAfter)
-        insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
+    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
+    addObject(ast, content, insertAfter);
+}
 
+void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter)
+{
     int insertionPoint;
     QString textToInsert;
     if (insertAfter && insertAfter->member) {
diff --git a/src/libs/qmljs/qmljsrewriter.h b/src/libs/qmljs/qmljsrewriter.h
index d2ad8e6113a..95f3d401121 100644
--- a/src/libs/qmljs/qmljsrewriter.h
+++ b/src/libs/qmljs/qmljsrewriter.h
@@ -56,11 +56,16 @@ public:
              Utils::ChangeSet *changeSet,
              const QStringList &propertyOrder);
 
+    void addBinding(AST::UiObjectInitializer *ast,
+                    const QString &propertyName,
+                    const QString &propertyValue,
+                    BindingType bindingType);
+
     void addBinding(AST::UiObjectInitializer *ast,
                     const QString &propertyName,
                     const QString &propertyValue,
                     BindingType bindingType,
-                    AST::UiObjectMemberList *insertAfter = 0);
+                    AST::UiObjectMemberList *insertAfter);
 
     void changeProperty(AST::UiObjectInitializer *ast,
                         const QString &propertyName,
@@ -71,7 +76,8 @@ public:
 
     void appendToArrayBinding(AST::UiArrayBinding *arrayBinding,
                               const QString &content);
-    void addObject(AST::UiObjectInitializer *ast, const QString &content, AST::UiObjectMemberList *insertAfter = 0);
+    void addObject(AST::UiObjectInitializer *ast, const QString &content);
+    void addObject(AST::UiObjectInitializer *ast, const QString &content, AST::UiObjectMemberList *insertAfter);
     void removeObjectMember(AST::UiObjectMember *member, AST::UiObjectMember *parent);
 
     static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QStringList &propertyOrder);
-- 
GitLab