[cfe-commits] r46619 - in /cfe/trunk: Driver/RewriteTest.cpp Rewrite/Rewriter.cpp clang.xcodeproj/project.pbxproj include/clang/Rewrite/Rewriter.h

Chris Lattner sabre at nondot.org
Thu Jan 31 11:37:57 PST 2008


Author: lattner
Date: Thu Jan 31 13:37:57 2008
New Revision: 46619

URL: http://llvm.org/viewvc/llvm-project?rev=46619&view=rev
Log:
Make rewriter::inserttext return a bool to indicate if it failed.

Add a RewriteTest::ReplaceStmt method to factor the 'checking for
rewrite failed + emitting diagnostic if so' code.

Modified:
    cfe/trunk/Driver/RewriteTest.cpp
    cfe/trunk/Rewrite/Rewriter.cpp
    cfe/trunk/clang.xcodeproj/project.pbxproj
    cfe/trunk/include/clang/Rewrite/Rewriter.h

Modified: cfe/trunk/Driver/RewriteTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/RewriteTest.cpp?rev=46619&r1=46618&r2=46619&view=diff

==============================================================================
--- cfe/trunk/Driver/RewriteTest.cpp (original)
+++ cfe/trunk/Driver/RewriteTest.cpp Thu Jan 31 13:37:57 2008
@@ -170,6 +170,20 @@
                "rewriting sub-expression within a macro (may not be correct)");
     }
     ~RewriteTest();
+    
+    void ReplaceStmt(Stmt *Old, Stmt *New) {
+      if (!Rewrite.ReplaceStmt(Old, New))
+        return;
+
+      // Replacement failed, report a warning unless disabled.
+      if (SilenceRewriteMacroWarning) return;
+
+      SourceRange Range = Old->getSourceRange();
+      Diags.Report(Context->getFullLoc(Old->getLocStart()), RewriteFailedDiag,
+                   0, 0, &Range, 1);
+    }
+    
+    
 
     // Syntactic Rewriting.
     void RewritePrologue(SourceLocation Loc);
@@ -708,13 +722,7 @@
   if (IV->isFreeIvar()) {
     Expr *Replacement = new MemberExpr(IV->getBase(), true, D, 
                                        IV->getLocation());
-    if (Rewrite.ReplaceStmt(IV, Replacement)) {
-      // replacement failed.
-      SourceRange Range = IV->getSourceRange();
-      if (!SilenceRewriteMacroWarning)
-        Diags.Report(Context->getFullLoc(IV->getLocation()), RewriteFailedDiag, 
-                                         0, 0, &Range, 1);
-    }
+    ReplaceStmt(IV, Replacement);
     delete IV;
     return Replacement;
   } else {
@@ -734,13 +742,7 @@
           CastExpr *castExpr = new CastExpr(castT, IV->getBase(), SourceLocation());
           // Don't forget the parens to enforce the proper binding.
           ParenExpr *PE = new ParenExpr(SourceLocation(), SourceLocation(), castExpr);
-          if (Rewrite.ReplaceStmt(IV->getBase(), PE)) {
-            // replacement failed.
-            SourceRange Range = IV->getBase()->getSourceRange();
-            if (!SilenceRewriteMacroWarning)
-              Diags.Report(Context->getFullLoc(IV->getBase()->getLocStart()), 
-                           RewriteFailedDiag, 0, 0, &Range, 1);
-          }
+          ReplaceStmt(IV->getBase(), PE);
           delete IV->getBase();
           return PE;
         }
@@ -1267,7 +1269,7 @@
   return 0;
 }
 
-// This can't be done with Rewrite.ReplaceStmt(S, ThrowExpr), since 
+// This can't be done with ReplaceStmt(S, ThrowExpr), since 
 // the throw expression is typically a message expression that's already 
 // been rewritten! (which implies the SourceLocation's are invalid).
 Stmt *RewriteTest::RewriteObjCThrowStmt(ObjCAtThrowStmt *S) {
@@ -1301,13 +1303,7 @@
   Expr *Replacement = new StringLiteral(StrEncoding.c_str(),
                                         StrEncoding.length(), false, StrType, 
                                         SourceLocation(), SourceLocation());
-  if (Rewrite.ReplaceStmt(Exp, Replacement)) {
-    // replacement failed.
-    SourceRange Range = Exp->getSourceRange();
-    if (!SilenceRewriteMacroWarning)
-      Diags.Report(Context->getFullLoc(Exp->getAtLoc()), RewriteFailedDiag,
-                                       0, 0, &Range, 1);
-  }
+  ReplaceStmt(Exp, Replacement);
   
   // Replace this subexpr in the parent.
   delete Exp;
@@ -1325,13 +1321,7 @@
                                        SourceLocation()));
   CallExpr *SelExp = SynthesizeCallToFunctionDecl(SelGetUidFunctionDecl,
                                                  &SelExprs[0], SelExprs.size());
-  if (Rewrite.ReplaceStmt(Exp, SelExp)) {
-    // replacement failed.
-    SourceRange Range = Exp->getSourceRange();
-    if (!SilenceRewriteMacroWarning)
-      Diags.Report(Context->getFullLoc(Exp->getAtLoc()), RewriteFailedDiag,
-                                       0, 0, &Range, 1);
-  }
+  ReplaceStmt(Exp, SelExp);
   delete Exp;
   return SelExp;
 }
@@ -1657,13 +1647,7 @@
                                                 &StrExpr[0], StrExpr.size());
   // cast to NSConstantString *
   CastExpr *cast = new CastExpr(Exp->getType(), call, SourceLocation());
-  if (Rewrite.ReplaceStmt(Exp, cast)) {
-    // replacement failed.
-    SourceRange Range = Exp->getSourceRange();
-    if (!SilenceRewriteMacroWarning)
-      Diags.Report(Context->getFullLoc(Exp->getAtLoc()), RewriteFailedDiag,
-                                       0, 0, &Range, 1);
-  }
+  ReplaceStmt(Exp, cast);
   delete Exp;
   return cast;
 #else
@@ -1701,7 +1685,7 @@
                            SourceLocation());
   // cast to NSConstantString *
   cast = new CastExpr(Exp->getType(), Unop, SourceLocation());
-  Rewrite.ReplaceStmt(Exp, cast);
+  ReplaceStmt(Exp, cast);
   delete Exp;
   return cast;
 #endif
@@ -2037,13 +2021,7 @@
 Stmt *RewriteTest::RewriteMessageExpr(ObjCMessageExpr *Exp) {
   Stmt *ReplacingStmt = SynthMessageExpr(Exp);
   // Now do the actual rewrite.
-  if (Rewrite.ReplaceStmt(Exp, ReplacingStmt)) {
-    // replacement failed.
-    SourceRange Range = Exp->getSourceRange();
-    if (!SilenceRewriteMacroWarning)
-      Diags.Report(Context->getFullLoc(Exp->getLocStart()), RewriteFailedDiag,
-                                       0, 0, &Range, 1);
-  }
+  ReplaceStmt(Exp, ReplacingStmt);
   
   delete Exp;
   return ReplacingStmt;
@@ -2064,13 +2042,7 @@
   CallExpr *ProtoExp = SynthesizeCallToFunctionDecl(GetProtocolFunctionDecl,
                                                     &ProtoExprs[0], 
                                                     ProtoExprs.size());
-  if (Rewrite.ReplaceStmt(Exp, ProtoExp)) {
-    // replacement failed.
-    SourceRange Range = Exp->getSourceRange();
-    if (!SilenceRewriteMacroWarning)
-      Diags.Report(Context->getFullLoc(Exp->getAtLoc()), RewriteFailedDiag,
-                                       0, 0, &Range, 1);
-  }
+  ReplaceStmt(Exp, ProtoExp);
   delete Exp;
   return ProtoExp;
   

Modified: cfe/trunk/Rewrite/Rewriter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Rewrite/Rewriter.cpp?rev=46619&r1=46618&r2=46619&view=diff

==============================================================================
--- cfe/trunk/Rewrite/Rewriter.cpp (original)
+++ cfe/trunk/Rewrite/Rewriter.cpp Thu Jan 31 13:37:57 2008
@@ -206,12 +206,13 @@
 /// InsertText - Insert the specified string at the specified location in the
 /// original buffer.  This method is only valid on rewritable source
 /// locations.
-void Rewriter::InsertText(SourceLocation Loc,
+bool Rewriter::InsertText(SourceLocation Loc,
                           const char *StrData, unsigned StrLen) {
-  assert(isRewritable(Loc) && "Not a rewritable location!");
+  if (!isRewritable(Loc)) return true;
   unsigned FileID;
   unsigned StartOffs = getLocationOffsetAndFileID(Loc, FileID);
   getEditBuffer(FileID).InsertText(StartOffs, StrData, StrLen);
+  return false;
 }
 
 /// RemoveText - Remove the specified text region.  This method is only valid

Modified: cfe/trunk/clang.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/clang.xcodeproj/project.pbxproj?rev=46619&r1=46618&r2=46619&view=diff

==============================================================================
--- cfe/trunk/clang.xcodeproj/project.pbxproj (original)
+++ cfe/trunk/clang.xcodeproj/project.pbxproj Thu Jan 31 13:37:57 2008
@@ -576,9 +576,9 @@
 				DE928B7C0C0A615100231DA4 /* CodeGenModule.h */,
 				DE928B7E0C0A615600231DA4 /* CodeGenModule.cpp */,
 				DEEBC3BB0C2363BC00A9FE82 /* CodeGenTypes.cpp */,
+				DEEBC3B90C2363B800A9FE82 /* CodeGenTypes.h */,
 				1ABC36930C7A4BDC006DB0AB /* CGBuiltin.cpp */,
 				DE4264FB0C113592005A861D /* CGDecl.cpp */,
-				DEEBC3B90C2363B800A9FE82 /* CodeGenTypes.h */,
 				DE4772FB0C10EAEC002239E8 /* CGExpr.cpp */,
 				DEF2EFF20C6CDD74000C4259 /* CGExprAgg.cpp */,
 				DE224FF70C7AA98800D370A5 /* CGExprComplex.cpp */,

Modified: cfe/trunk/include/clang/Rewrite/Rewriter.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Rewrite/Rewriter.h?rev=46619&r1=46618&r2=46619&view=diff

==============================================================================
--- cfe/trunk/include/clang/Rewrite/Rewriter.h (original)
+++ cfe/trunk/include/clang/Rewrite/Rewriter.h Thu Jan 31 13:37:57 2008
@@ -127,9 +127,9 @@
   int getRangeSize(SourceRange Range) const;
   
   /// InsertText - Insert the specified string at the specified location in the
-  /// original buffer.  This method is only valid on rewritable source
-  /// locations.
-  void InsertText(SourceLocation Loc, const char *StrData, unsigned StrLen);
+  /// original buffer.  This method returns true (and does nothing) if the input
+  /// location was not rewritable, false otherwise.
+  bool InsertText(SourceLocation Loc, const char *StrData, unsigned StrLen);
   
   /// RemoveText - Remove the specified text region.  This method is only valid
   /// on a rewritable source location.





More information about the cfe-commits mailing list