Parsing of namespaces:

-NamespaceDecl for the AST
-Checks for name clashes between namespaces and tag/normal declarations.

This commit doesn't implement proper name lookup for namespaces.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50321 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclSerialization.cpp b/lib/AST/DeclSerialization.cpp
index 6186649..cbae831 100644
--- a/lib/AST/DeclSerialization.cpp
+++ b/lib/AST/DeclSerialization.cpp
@@ -44,6 +44,9 @@
     case TranslationUnit:
       return TranslationUnitDecl::CreateImpl(D, C);
 
+    case Namespace:
+      return NamespaceDecl::CreateImpl(D, C);
+
     case Var:
       return VarDecl::CreateImpl(D, C);
       
@@ -206,8 +209,7 @@
 TranslationUnitDecl* TranslationUnitDecl::CreateImpl(Deserializer& D,
                                                      ASTContext& C) {  
   void *Mem = C.getAllocator().Allocate<TranslationUnitDecl>();
-  TranslationUnitDecl* decl =
-    new (Mem) TranslationUnitDecl();
+  TranslationUnitDecl* decl = new (Mem) TranslationUnitDecl();
  
   decl->Decl::ReadInRec(D, C);
   
@@ -215,6 +217,30 @@
 }
 
 //===----------------------------------------------------------------------===//
+//      NamespaceDecl Serialization.
+//===----------------------------------------------------------------------===//
+
+void NamespaceDecl::EmitImpl(llvm::Serializer& S) const
+{
+  ScopedDecl::EmitInRec(S);
+  S.Emit(getLBracLoc());
+  S.Emit(getRBracLoc());
+  ScopedDecl::EmitOutRec(S);
+}
+
+NamespaceDecl* NamespaceDecl::CreateImpl(Deserializer& D, ASTContext& C) {  
+  void *Mem = C.getAllocator().Allocate<NamespaceDecl>();
+  NamespaceDecl* decl = new (Mem) NamespaceDecl(0, SourceLocation(), 0);
+ 
+  decl->ScopedDecl::ReadInRec(D, C);
+  decl->LBracLoc = SourceLocation::ReadVal(D);
+  decl->RBracLoc = SourceLocation::ReadVal(D);
+  decl->ScopedDecl::ReadOutRec(D, C);
+  
+  return decl;
+}
+
+//===----------------------------------------------------------------------===//
 //      VarDecl Serialization.
 //===----------------------------------------------------------------------===//