class ASTConsumer;
class Diagnostic;
+class FileManager;
struct LangOptions;
ASTConsumer *CreateASTPrinter(std::ostream* OS = NULL);
ASTConsumer *CreateUnitValsChecker(Diagnostic &Diags);
ASTConsumer *CreateLLVMEmitter(Diagnostic &Diags, const LangOptions &Features);
ASTConsumer *CreateCodeRewriterTest(Diagnostic &Diags);
-ASTConsumer *CreateSerializationTest(Diagnostic &Diags);
+ASTConsumer *CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr);
} // end clang namespace
#include "ASTConsumers.h"
#include "clang/Basic/TargetInfo.h"
+#include "clang/Basic/SourceManager.h"
#include "clang/AST/AST.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
class SerializationTest : public ASTConsumer {
ASTContext* Context;
Diagnostic &Diags;
+ FileManager &FMgr;
std::list<Decl*> Decls;
enum { BasicMetadataBlock = 1,
DeclsBlock = 3 };
public:
- SerializationTest(Diagnostic &d) : Context(NULL), Diags(d) {};
+ SerializationTest(Diagnostic &d, FileManager& fmgr)
+ : Context(NULL), Diags(d), FMgr(fmgr) {};
+
~SerializationTest();
virtual void Initialize(ASTContext& context, unsigned) {
} // end anonymous namespace
-ASTConsumer* clang::CreateSerializationTest(Diagnostic &Diags) {
- return new SerializationTest(Diags);
+ASTConsumer*
+clang::CreateSerializationTest(Diagnostic &Diags, FileManager& FMgr) {
+ return new SerializationTest(Diags,FMgr);
}
static void WritePreamble(llvm::BitstreamWriter& Stream) {
Sezr.EnterBlock();
// "Fake" emit the SourceManager.
- llvm::cerr << "Faux-serializing: SourceManager.\n";
- Sezr.EmitPtr(&Context->SourceMgr);
+ llvm::cerr << "Serializing: SourceManager.\n";
+ Sezr.Emit(Context->SourceMgr);
// Emit the Target.
llvm::cerr << "Serializing: Target.\n";
FoundBlock = Dezr.SkipToBlock(BasicMetadataBlock);
assert (FoundBlock);
- // "Fake" read the SourceManager.
- llvm::cerr << "Faux-Deserializing: SourceManager.\n";
- Dezr.RegisterPtr(&Context->SourceMgr);
+ // Read the SourceManager.
+ llvm::cerr << "Deserializing: SourceManager.\n";
+ SourceManager::CreateAndRegister(Dezr,FMgr);
{ // Read the TargetInfo.
llvm::cerr << "Deserializing: Target.\n";