]> granicus.if.org Git - clang/commitdiff
Unbreak SerializationTest and the Rewriter by doing the work in HandleTranslationUnit...
authorTed Kremenek <kremenek@apple.com>
Fri, 8 Aug 2008 04:15:52 +0000 (04:15 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 8 Aug 2008 04:15:52 +0000 (04:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@54513 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteObjC.cpp
Driver/SerializationTest.cpp

index 408860e7e7b754f1e4748a05dfc16e277d35b398..59a77e7c598de006cd48cdf0969406deda75cbe5 100644 (file)
@@ -108,7 +108,10 @@ namespace {
     void HandleDeclInMainFile(Decl *D);
     RewriteObjC(std::string inFile, std::string outFile,
                 Diagnostic &D, const LangOptions &LOpts);
-    ~RewriteObjC();
+
+    ~RewriteObjC() {}
+    
+    virtual void HandleTranslationUnit(TranslationUnit& TU);
     
     void ReplaceStmt(Stmt *Old, Stmt *New) {
       // If replacement succeeded or warning disabled return with no warning.
@@ -439,7 +442,7 @@ void RewriteObjC::HandleDeclInMainFile(Decl *D) {
   // Nothing yet.
 }
 
-RewriteObjC::~RewriteObjC() {
+void RewriteObjC::HandleTranslationUnit(TranslationUnit& TU) {
   // Get the top-level buffer that this corresponds to.
   
   // Rewrite tabs if we care.
index 946a4c87d6ae83560702955245a375256283d8c8..cafc502f266fcf2c8626d146f45bd1c791c3aef7 100644 (file)
@@ -33,19 +33,20 @@ using namespace clang;
 namespace {
   
 class SerializationTest : public ASTConsumer {
-  TranslationUnit* TU;
   Diagnostic &Diags;
   FileManager &FMgr;  
 public:  
   SerializationTest(Diagnostic &d, FileManager& fmgr)
-                    : TU(0), Diags(d), FMgr(fmgr) {}
+                    : Diags(d), FMgr(fmgr) {}
   
-  ~SerializationTest();
-
-  virtual void InitializeTU(TranslationUnit& tu) { TU = &tu; }  
+  ~SerializationTest() {}
+  
+  virtual void HandleTranslationUnit(TranslationUnit& TU);
   
 private:
-  bool Serialize(llvm::sys::Path& Filename, llvm::sys::Path& FNameDeclPrint);
+  bool Serialize(llvm::sys::Path& Filename, llvm::sys::Path& FNameDeclPrint,
+                 TranslationUnit& TU);
+  
   bool Deserialize(llvm::sys::Path& Filename, llvm::sys::Path& FNameDeclPrint);
 };
   
@@ -58,19 +59,20 @@ clang::CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr) {
 
 
 bool SerializationTest::Serialize(llvm::sys::Path& Filename,
-                                  llvm::sys::Path& FNameDeclPrint) {
+                                  llvm::sys::Path& FNameDeclPrint,
+                                  TranslationUnit& TU) {
   { 
     // Pretty-print the decls to a temp file.
     std::ofstream DeclPP(FNameDeclPrint.c_str());
     assert (DeclPP && "Could not open file for printing out decls.");
     llvm::OwningPtr<ASTConsumer> FilePrinter(CreateASTPrinter(&DeclPP));
     
-    for (TranslationUnit::iterator I=TU->begin(), E=TU->end(); I!=E; ++I)
+    for (TranslationUnit::iterator I=TU.begin(), E=TU.end(); I!=E; ++I)
       FilePrinter->HandleTopLevelDecl(*I);
   }
   
   // Serialize the translation unit.
-  return EmitASTBitcodeFile(*TU,Filename);
+  return EmitASTBitcodeFile(TU,Filename);
 }
 
 bool SerializationTest::Deserialize(llvm::sys::Path& Filename,
@@ -82,7 +84,7 @@ bool SerializationTest::Deserialize(llvm::sys::Path& Filename,
   if (!NewTU)
     return false;
   
-  { 
+  {
     // Pretty-print the deserialized decls to a temp file.
     std::ofstream DeclPP(FNameDeclPrint.c_str());
     assert (DeclPP && "Could not open file for printing out decls.");
@@ -110,7 +112,7 @@ namespace {
   };
 }
 
-SerializationTest::~SerializationTest() {
+void SerializationTest::HandleTranslationUnit(TranslationUnit& TU) {
 
   std::string ErrMsg;
   llvm::sys::Path Dir = llvm::sys::Path::GetTemporaryDirectory(&ErrMsg);
@@ -147,7 +149,7 @@ SerializationTest::~SerializationTest() {
   }
   
   // Serialize and then deserialize the ASTs.
-  bool status = Serialize(ASTFilename, FNameDeclBefore);
+  bool status = Serialize(ASTFilename, FNameDeclBefore, TU);
   assert (status && "Serialization failed.");  
   status = Deserialize(ASTFilename, FNameDeclAfter);
   assert (status && "Deserialization failed.");