[cfe-commits] r48926 - in /cfe/trunk: Driver/RewriteTest.cpp test/Rewriter/objc-ivar-receiver-1.m

Steve Naroff snaroff at apple.com
Fri Mar 28 15:26:09 PDT 2008


Author: snaroff
Date: Fri Mar 28 17:26:09 2008
New Revision: 48926

URL: http://llvm.org/viewvc/llvm-project?rev=48926&view=rev
Log:
Only have the rewriter produce a file when there are no errors.

Modified:
    cfe/trunk/Driver/RewriteTest.cpp
    cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m

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

==============================================================================
--- cfe/trunk/Driver/RewriteTest.cpp (original)
+++ cfe/trunk/Driver/RewriteTest.cpp Fri Mar 28 17:26:09 2008
@@ -84,8 +84,9 @@
     // Needed for header files being rewritten
     bool IsHeader;
     
-    std::ostream &OutFile;
-    
+    std::string InFileName;
+    std::string OutFileName;
+     
     std::string Preamble;
     
     static const int OBJC_ABI_VERSION =7 ;
@@ -96,13 +97,8 @@
     // Top Level Driver code.
     virtual void HandleTopLevelDecl(Decl *D);
     void HandleDeclInMainFile(Decl *D);
-    RewriteTest(bool isHeader, std::ostream &outFile,
-                Diagnostic &D, const LangOptions &LOpts)
-      : Diags(D), LangOpts(LOpts), OutFile(outFile) {
-      IsHeader = isHeader;
-      RewriteFailedDiag = Diags.getCustomDiagID(Diagnostic::Warning, 
-               "rewriting sub-expression within a macro (may not be correct)");
-    }
+    RewriteTest(std::string inFile, std::string outFile,
+                Diagnostic &D, const LangOptions &LOpts);
     ~RewriteTest();
     
     void ReplaceStmt(Stmt *Old, Stmt *New) {
@@ -239,29 +235,21 @@
   return Ext == "h" || Ext == "hh" || Ext == "H";
 }    
 
+RewriteTest::RewriteTest(std::string inFile, std::string outFile,
+                         Diagnostic &D, const LangOptions &LOpts)
+      : Diags(D), LangOpts(LOpts) {
+  IsHeader = IsHeaderFile(inFile);
+  InFileName = inFile;
+  OutFileName = outFile;
+  RewriteFailedDiag = Diags.getCustomDiagID(Diagnostic::Warning, 
+               "rewriting sub-expression within a macro (may not be correct)");
+}
+
 ASTConsumer *clang::CreateCodeRewriterTest(const std::string& InFile,
                                            const std::string& OutFile,
                                            Diagnostic &Diags, 
                                            const LangOptions &LOpts) {
-  // Create the output file.
-  
-  std::ostream *Out;
-  if (OutFile == "-") {
-    Out = llvm::cout.stream();
-  } else if (!OutFile.empty()) {
-    Out = new std::ofstream(OutFile.c_str(), 
-                            std::ios_base::binary|std::ios_base::out);
-  } else if (InFile == "-") {
-    Out = llvm::cout.stream();
-  } else {
-    llvm::sys::Path Path(InFile);
-    Path.eraseSuffix();
-    Path.appendSuffix("cpp");
-    Out = new std::ofstream(Path.toString().c_str(), 
-                            std::ios_base::binary|std::ios_base::out);
-  }
-  
-  return new RewriteTest(IsHeaderFile(InFile), *Out, Diags, LOpts);
+  return new RewriteTest(InFile, OutFile, Diags, LOpts);
 }
 
 void RewriteTest::Initialize(ASTContext &context) {
@@ -436,6 +424,27 @@
   // Rewrite tabs if we care.
   //RewriteTabs();
   
+  if (Diags.hasErrorOccurred())
+    return;
+
+  // Create the output file.
+  
+  std::ostream *OutFile;
+  if (OutFileName == "-") {
+    OutFile = llvm::cout.stream();
+  } else if (!OutFileName.empty()) {
+    OutFile = new std::ofstream(OutFileName.c_str(), 
+                                std::ios_base::binary|std::ios_base::out);
+  } else if (InFileName == "-") {
+    OutFile = llvm::cout.stream();
+  } else {
+    llvm::sys::Path Path(InFileName);
+    Path.eraseSuffix();
+    Path.appendSuffix("cpp");
+    OutFile = new std::ofstream(Path.toString().c_str(), 
+                                std::ios_base::binary|std::ios_base::out);
+  }
+  
   RewriteInclude();
   
   InsertText(SourceLocation::getFileLoc(MainFileID, 0), 
@@ -450,12 +459,12 @@
   if (const RewriteBuffer *RewriteBuf = 
       Rewrite.getRewriteBufferFor(MainFileID)) {
     //printf("Changed:\n");
-    OutFile << std::string(RewriteBuf->begin(), RewriteBuf->end());
+    *OutFile << std::string(RewriteBuf->begin(), RewriteBuf->end());
   } else {
     fprintf(stderr, "No changes\n");
   }
   // Emit metadata.
-  OutFile << ResultStr;
+  *OutFile << ResultStr;
 }
 
 //===----------------------------------------------------------------------===//

Modified: cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m?rev=48926&r1=48925&r2=48926&view=diff

==============================================================================
--- cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m (original)
+++ cfe/trunk/test/Rewriter/objc-ivar-receiver-1.m Fri Mar 28 17:26:09 2008
@@ -1,4 +1,4 @@
-// RUN: clang -rewrite-test %s 
+// RUN: clang -rewrite-test %s -o -
 // RUN: clang -rewrite-test %s -o - | grep 'newInv->_container'
 
 @interface NSMutableArray 





More information about the cfe-commits mailing list