diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReaderDecl.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 64b33b066b0..ea549396f3e 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -44,9 +44,6 @@ namespace clang { unsigned &Idx; TypeID TypeIDForTypeDecl; - DeclID DeclContextIDForTemplateParmDecl; - DeclID LexicalDeclContextIDForTemplateParmDecl; - bool HasPendingBody; uint64_t GetCurrentCursorOffset(); @@ -329,14 +326,6 @@ void ASTDeclReader::Visit(Decl *D) { Reader.PendingBodies[FD] = GetCurrentCursorOffset(); HasPendingBody = true; } - } else if (D->isTemplateParameter()) { - // If we have a fully initialized template parameter, we can now - // set its DeclContext. - DeclContext *SemaDC = cast<DeclContext>( - Reader.GetDecl(DeclContextIDForTemplateParmDecl)); - DeclContext *LexicalDC = cast<DeclContext>( - Reader.GetDecl(LexicalDeclContextIDForTemplateParmDecl)); - D->setDeclContextsImpl(SemaDC, LexicalDC, Reader.getContext()); } } @@ -346,8 +335,11 @@ void ASTDeclReader::VisitDecl(Decl *D) { // parameter immediately, because the template parameter might be // used in the formulation of its DeclContext. Use the translation // unit DeclContext as a placeholder. - DeclContextIDForTemplateParmDecl = ReadDeclID(Record, Idx); - LexicalDeclContextIDForTemplateParmDecl = ReadDeclID(Record, Idx); + GlobalDeclID SemaDCIDForTemplateParmDecl = ReadDeclID(Record, Idx); + GlobalDeclID LexicalDCIDForTemplateParmDecl = ReadDeclID(Record, Idx); + Reader.addPendingDeclContextInfo(D, + SemaDCIDForTemplateParmDecl, + LexicalDCIDForTemplateParmDecl); D->setDeclContext(Reader.getContext().getTranslationUnitDecl()); } else { DeclContext *SemaDC = ReadDeclAs<DeclContext>(Record, Idx); |