From 74e8027a7b894ba6a92da80716dde108ca30064c Mon Sep 17 00:00:00 2001
From: Kai Koehne <kai.koehne@nokia.com>
Date: Wed, 21 Jul 2010 12:21:29 +0200
Subject: [PATCH] QmlJS Rewriter: Return ranges for addX methods

This way one can reindent afterwards.

Reviewed-by: Erik Verbruggen
---
 src/libs/qmljs/qmljsrewriter.cpp | 30 +++++++++++++++++-------------
 src/libs/qmljs/qmljsrewriter.h   | 16 +++++++---------
 2 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp
index 7586f74f4c2..20b1a7b30c5 100644
--- a/src/libs/qmljs/qmljsrewriter.cpp
+++ b/src/libs/qmljs/qmljsrewriter.cpp
@@ -52,22 +52,22 @@ Rewriter::Rewriter(const QString &originalText,
     Q_ASSERT(changeSet);
 }
 
-void Rewriter::addBinding(AST::UiObjectInitializer *ast,
-                          const QString &propertyName,
-                          const QString &propertyValue,
-                          BindingType bindingType)
+Rewriter::Range 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);
+    return addBinding(ast, propertyName, propertyValue, bindingType, insertAfter);
 }
 
-void Rewriter::addBinding(AST::UiObjectInitializer *ast,
-                          const QString &propertyName,
-                          const QString &propertyValue,
-                          BindingType bindingType,
-                          UiObjectMemberList *insertAfter)
+Rewriter::Range Rewriter::addBinding(AST::UiObjectInitializer *ast,
+                                     const QString &propertyName,
+                                     const QString &propertyValue,
+                                     BindingType bindingType,
+                                     UiObjectMemberList *insertAfter)
 {
     SourceLocation endOfPreviousMember;
     SourceLocation startOfNextMember;
@@ -138,6 +138,8 @@ void Rewriter::addBinding(AST::UiObjectInitializer *ast,
 
     m_changeSet->insert(endOfPreviousMember.end(),
                          newPropertyTemplate.arg(propertyName, propertyValue));
+
+    return Range(endOfPreviousMember.end(), endOfPreviousMember.end());
 }
 
 UiObjectMemberList *Rewriter::searchMemberToInsertAfter(UiObjectMemberList *members,
@@ -577,13 +579,13 @@ void Rewriter::appendToArrayBinding(UiArrayBinding *arrayBinding,
     m_changeSet->insert(insertionPoint, QLatin1String(",\n") + content);
 }
 
-void Rewriter::addObject(UiObjectInitializer *ast, const QString &content)
+Rewriter::Range Rewriter::addObject(UiObjectInitializer *ast, const QString &content)
 {
     UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
-    addObject(ast, content, insertAfter);
+    return addObject(ast, content, insertAfter);
 }
 
-void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter)
+Rewriter::Range Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter)
 {
     int insertionPoint;
     QString textToInsert;
@@ -596,6 +598,8 @@ void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObj
 
     textToInsert += content;
     m_changeSet->insert(insertionPoint, QLatin1String("\n") + textToInsert);
+
+    return Range(insertionPoint, insertionPoint);
 }
 
 void Rewriter::removeObjectMember(UiObjectMember *member, UiObjectMember *parent)
diff --git a/src/libs/qmljs/qmljsrewriter.h b/src/libs/qmljs/qmljsrewriter.h
index 95f3d401121..8adc9bf64a6 100644
--- a/src/libs/qmljs/qmljsrewriter.h
+++ b/src/libs/qmljs/qmljsrewriter.h
@@ -31,15 +31,11 @@
 #define QMLJSREWRITER_H
 
 #include <qmljs/qmljs_global.h>
-
 #include <qmljs/parser/qmljsastfwd_p.h>
+#include <utils/changeset.h>
 
 #include <QtCore/QStringList>
 
-namespace Utils {
-class ChangeSet;
-}
-
 namespace QmlJS {
 
 class QMLJS_EXPORT Rewriter
@@ -51,17 +47,19 @@ public:
         ArrayBinding
     };
 
+    typedef Utils::ChangeSet::Range Range;
+
 public:
     Rewriter(const QString &originalText,
              Utils::ChangeSet *changeSet,
              const QStringList &propertyOrder);
 
-    void addBinding(AST::UiObjectInitializer *ast,
+    Range addBinding(AST::UiObjectInitializer *ast,
                     const QString &propertyName,
                     const QString &propertyValue,
                     BindingType bindingType);
 
-    void addBinding(AST::UiObjectInitializer *ast,
+    Range addBinding(AST::UiObjectInitializer *ast,
                     const QString &propertyName,
                     const QString &propertyValue,
                     BindingType bindingType,
@@ -76,8 +74,8 @@ public:
 
     void appendToArrayBinding(AST::UiArrayBinding *arrayBinding,
                               const QString &content);
-    void addObject(AST::UiObjectInitializer *ast, const QString &content);
-    void addObject(AST::UiObjectInitializer *ast, const QString &content, AST::UiObjectMemberList *insertAfter);
+    Range addObject(AST::UiObjectInitializer *ast, const QString &content);
+    Range 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