diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2008-04-27 13:50:30 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2008-04-27 13:50:30 +0000 |
commit | 2d1c5d313cd0c229cc614e74baa4c5756a4b46f4 (patch) | |
tree | 7d70bf13b88e07d74c70202bf6c6fd4e10dea312 /lib/AST/DeclSerialization.cpp | |
parent | 642e38baaeedb1a35c36df02a1ac57002a43a694 (diff) |
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
Diffstat (limited to 'lib/AST/DeclSerialization.cpp')
-rw-r--r-- | lib/AST/DeclSerialization.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/lib/AST/DeclSerialization.cpp b/lib/AST/DeclSerialization.cpp index 6186649e70..cbae831308 100644 --- a/lib/AST/DeclSerialization.cpp +++ b/lib/AST/DeclSerialization.cpp @@ -44,6 +44,9 @@ Decl* Decl::Create(Deserializer& D, ASTContext& C) { 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 @@ void TranslationUnitDecl::EmitImpl(llvm::Serializer& S) const 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 @@ TranslationUnitDecl* TranslationUnitDecl::CreateImpl(Deserializer& D, } //===----------------------------------------------------------------------===// +// 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. //===----------------------------------------------------------------------===// |