diff options
Diffstat (limited to 'lib/Serialization/ASTWriterDecl.cpp')
-rw-r--r-- | lib/Serialization/ASTWriterDecl.cpp | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/lib/Serialization/ASTWriterDecl.cpp b/lib/Serialization/ASTWriterDecl.cpp index efc1ea30ef..a0f7da20e6 100644 --- a/lib/Serialization/ASTWriterDecl.cpp +++ b/lib/Serialization/ASTWriterDecl.cpp @@ -1059,16 +1059,12 @@ void ASTDeclWriter::VisitClassTemplateSpecializationDecl( llvm::PointerUnion<ClassTemplateDecl *, ClassTemplatePartialSpecializationDecl *> InstFrom = D->getSpecializedTemplateOrPartial(); - Decl *InstFromD; - if (InstFrom.is<ClassTemplateDecl *>()) { - InstFromD = InstFrom.get<ClassTemplateDecl *>(); + if (Decl *InstFromD = InstFrom.dyn_cast<ClassTemplateDecl *>()) { Writer.AddDeclRef(InstFromD, Record); } else { - InstFromD = InstFrom.get<ClassTemplatePartialSpecializationDecl *>(); - Writer.AddDeclRef(InstFromD, Record); + Writer.AddDeclRef(InstFrom.get<ClassTemplatePartialSpecializationDecl *>(), + Record); Writer.AddTemplateArgumentList(&D->getTemplateInstantiationArgs(), Record); - InstFromD = cast<ClassTemplatePartialSpecializationDecl>(InstFromD)-> - getSpecializedTemplate(); } // Explicit info. |