@@ -997,12 +997,23 @@ void ClassTemplateSpecializationDecl::getNameForDiagnostic(
997997 }
998998}
999999
1000+ llvm::PointerUnion<ClassTemplateDecl *,
1001+ ClassTemplatePartialSpecializationDecl *>
1002+ ClassTemplateSpecializationDecl::getSpecializedTemplateOrPartial () const {
1003+ if (const auto *PartialSpec =
1004+ SpecializedTemplate.dyn_cast <SpecializedPartialSpecialization *>())
1005+ return PartialSpec->PartialSpecialization ->getMostRecentDecl ();
1006+
1007+ return SpecializedTemplate.get <ClassTemplateDecl *>()->getMostRecentDecl ();
1008+ }
1009+
10001010ClassTemplateDecl *
10011011ClassTemplateSpecializationDecl::getSpecializedTemplate () const {
10021012 if (const auto *PartialSpec =
10031013 SpecializedTemplate.dyn_cast <SpecializedPartialSpecialization*>())
1004- return PartialSpec->PartialSpecialization ->getSpecializedTemplate ();
1005- return SpecializedTemplate.get <ClassTemplateDecl*>();
1014+ return PartialSpec->PartialSpecialization ->getSpecializedTemplate ()
1015+ ->getMostRecentDecl ();
1016+ return SpecializedTemplate.get <ClassTemplateDecl *>()->getMostRecentDecl ();
10061017}
10071018
10081019SourceRange
@@ -1410,11 +1421,21 @@ void VarTemplateSpecializationDecl::getNameForDiagnostic(
14101421 }
14111422}
14121423
1424+ llvm::PointerUnion<VarTemplateDecl *, VarTemplatePartialSpecializationDecl *>
1425+ VarTemplateSpecializationDecl::getSpecializedTemplateOrPartial () const {
1426+ if (const auto *PartialSpec =
1427+ SpecializedTemplate.dyn_cast <SpecializedPartialSpecialization *>())
1428+ return PartialSpec->PartialSpecialization ->getMostRecentDecl ();
1429+
1430+ return SpecializedTemplate.get <VarTemplateDecl *>()->getMostRecentDecl ();
1431+ }
1432+
14131433VarTemplateDecl *VarTemplateSpecializationDecl::getSpecializedTemplate () const {
14141434 if (const auto *PartialSpec =
14151435 SpecializedTemplate.dyn_cast <SpecializedPartialSpecialization *>())
1416- return PartialSpec->PartialSpecialization ->getSpecializedTemplate ();
1417- return SpecializedTemplate.get <VarTemplateDecl *>();
1436+ return PartialSpec->PartialSpecialization ->getSpecializedTemplate ()
1437+ ->getMostRecentDecl ();
1438+ return SpecializedTemplate.get <VarTemplateDecl *>()->getMostRecentDecl ();
14181439}
14191440
14201441SourceRange VarTemplateSpecializationDecl::getSourceRange () const {
0 commit comments