diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-06-25 16:24:58 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-06-25 16:24:58 +0000 |
commit | 3acad62a239448bef0f5848b2a0d5f7dfefd3d14 (patch) | |
tree | 77c57ee55018deb8d3e02b0272263a07b649c49a /lib/Frontend/PCHWriter.cpp | |
parent | a56b049b009725efdf5b540128c90ec21e3eb9c1 (diff) |
Support DependentTemplateSpecializationType and ElaboratedType for PCH.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106858 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHWriter.cpp')
-rw-r--r-- | lib/Frontend/PCHWriter.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index 21ea5fcdc8..3c42d474dc 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -261,15 +261,20 @@ PCHTypeWriter::VisitDependentNameType(const DependentNameType *T) { void PCHTypeWriter::VisitDependentTemplateSpecializationType( const DependentTemplateSpecializationType *T) { - // FIXME: Serialize this type (C++ only) - assert(false && "Cannot serialize dependent template specialization types"); + Record.push_back(T->getKeyword()); + Writer.AddNestedNameSpecifier(T->getQualifier(), Record); + Writer.AddIdentifierRef(T->getIdentifier(), Record); + Record.push_back(T->getNumArgs()); + for (DependentTemplateSpecializationType::iterator + I = T->begin(), E = T->end(); I != E; ++I) + Writer.AddTemplateArgument(*I, Record); + Code = pch::TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION; } void PCHTypeWriter::VisitElaboratedType(const ElaboratedType *T) { - Writer.AddTypeRef(T->getNamedType(), Record); Record.push_back(T->getKeyword()); - // FIXME: Serialize the qualifier (C++ only) - assert(T->getQualifier() == 0 && "Cannot serialize qualified name types"); + Writer.AddNestedNameSpecifier(T->getQualifier(), Record); + Writer.AddTypeRef(T->getNamedType(), Record); Code = pch::TYPE_ELABORATED; } |