Add new API to rewrite one stmt/expr with another.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43101 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/RewriteTest.cpp b/Driver/RewriteTest.cpp
index 6972f35..508f799 100644
--- a/Driver/RewriteTest.cpp
+++ b/Driver/RewriteTest.cpp
@@ -22,14 +22,16 @@
 namespace {
   class RewriteTest : public ASTConsumer {
     Rewriter Rewrite;
+    ASTContext *Context;
     SourceManager *SM;
     unsigned MainFileID;
     SourceLocation LastIncLoc;
   public:
-    void Initialize(ASTContext &Context, unsigned mainFileID) {
-      SM = &Context.SourceMgr;
+    void Initialize(ASTContext &context, unsigned mainFileID) {
+      Context = &context;
+      SM = &Context->SourceMgr;
       MainFileID = mainFileID;
-      Rewrite.setSourceMgr(Context.SourceMgr);
+      Rewrite.setSourceMgr(Context->SourceMgr);
     }
     
     virtual void HandleTopLevelDecl(Decl *D);
@@ -109,13 +111,12 @@
 }
 
 void RewriteTest::RewriteAtEncode(ObjCEncodeExpr *Exp) {
-  int Size = Rewrite.getRangeSize(Exp->getSourceRange());
-  if (Size == -1) {
-    printf("BLAH!");
-    return;
-  }
-  
-  Rewrite.ReplaceText(Exp->getAtLoc(), Size, "\"foo\"", 5);
+  // Create a new string expression.
+  QualType StrType = Context->getPointerType(Context->CharTy);
+  Expr *Replacement = new StringLiteral("foo", 3, false, StrType, 
+                                        SourceLocation(), SourceLocation());
+  Rewrite.ReplaceStmt(Exp, Replacement);
+  delete Replacement;
 }