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;
}