diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-12-24 07:22:26 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2008-12-24 07:22:26 +0000 |
commit | 501c7252bd4752bc542630446494eb15b27f1f88 (patch) | |
tree | 9b5f4b8835d7ddbef0b561fe8a76e33864166b55 /lib/AST/TypeSerialization.cpp | |
parent | 8fbc5274c416967de5338778f685b7830464ad13 (diff) |
Add serialization support for TypeOfType.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61417 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/TypeSerialization.cpp')
-rw-r--r-- | lib/AST/TypeSerialization.cpp | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/AST/TypeSerialization.cpp b/lib/AST/TypeSerialization.cpp index 064b5b8dfe..42569da400 100644 --- a/lib/AST/TypeSerialization.cpp +++ b/lib/AST/TypeSerialization.cpp @@ -113,7 +113,11 @@ void Type::Create(ASTContext& Context, unsigned i, Deserializer& D) { case Type::TypeOfExp: D.RegisterPtr(PtrID, TypeOfExpr::CreateImpl(Context, D)); break; - + + case Type::TypeOfTyp: + D.RegisterPtr(PtrID, TypeOfType::CreateImpl(Context, D)); + break; + case Type::TemplateTypeParm: D.RegisterPtr(PtrID,TemplateTypeParmType::CreateImpl(Context, D)); break; @@ -282,6 +286,7 @@ Type* TypedefType::CreateImpl(ASTContext& Context, Deserializer& D) { //===----------------------------------------------------------------------===// // TypeOfExpr //===----------------------------------------------------------------------===// + void TypeOfExpr::EmitImpl(llvm::Serializer& S) const { S.EmitOwnedPtr(TOExpr); } @@ -297,6 +302,26 @@ Type* TypeOfExpr::CreateImpl(ASTContext& Context, Deserializer& D) { return T; } + +//===----------------------------------------------------------------------===// +// TypeOfType +//===----------------------------------------------------------------------===// + +void TypeOfType::EmitImpl(llvm::Serializer& S) const { + S.Emit(TOType); +} + +Type* TypeOfType::CreateImpl(ASTContext& Context, Deserializer& D) { + QualType TOType = QualType::ReadVal(D); + + std::vector<Type*>& Types = + const_cast<std::vector<Type*>&>(Context.getTypes()); + + TypeOfType* T = new TypeOfType(TOType, Context.getCanonicalType(TOType)); + Types.push_back(T); + + return T; +} //===----------------------------------------------------------------------===// // TemplateTypeParmType |