Skip to content

Commit f285886

Browse files
committed
[FOLD] use most recent declaration
1 parent 7542bda commit f285886

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

clang/lib/Sema/SemaTemplate.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4381,8 +4381,7 @@ Sema::CheckVarTemplateId(VarTemplateDecl *Template, SourceLocation TemplateLoc,
43814381
SmallVector<VarTemplatePartialSpecializationDecl *, 4> PartialSpecs;
43824382
Template->getPartialSpecializations(PartialSpecs);
43834383

4384-
for (unsigned I = 0, N = PartialSpecs.size(); I != N; ++I) {
4385-
VarTemplatePartialSpecializationDecl *Partial = PartialSpecs[I];
4384+
for (VarTemplatePartialSpecializationDecl *Partial : PartialSpecs) {
43864385
// C++ [temp.spec.partial.member]p2:
43874386
// If the primary member template is explicitly specialized for a given
43884387
// (implicit) specialization of the enclosing class template, the partial
@@ -4392,8 +4391,8 @@ Sema::CheckVarTemplateId(VarTemplateDecl *Template, SourceLocation TemplateLoc,
43924391
// given (implicit) specialization of the enclosing class template, the
43934392
// primary member template and its other partial specializations are still
43944393
// considered for this specialization of the enclosing class template.
4395-
if (Template->isMemberSpecialization() &&
4396-
!Partial->isMemberSpecialization())
4394+
if (Template->getMostRecentDecl()->isMemberSpecialization() &&
4395+
!Partial->getMostRecentDecl()->isMemberSpecialization())
43974396
continue;
43984397

43994398
TemplateDeductionInfo Info(FailedCandidates.getLocation());

clang/lib/Sema/SemaTemplateInstantiate.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3990,7 +3990,8 @@ bool Sema::usesPartialOrExplicitSpecialization(
39903990
// given (implicit) specialization of the enclosing class template, the
39913991
// primary member template and its other partial specializations are still
39923992
// considered for this specialization of the enclosing class template.
3993-
if (CTD->isMemberSpecialization() && !CTPSD->isMemberSpecialization())
3993+
if (CTD->getMostRecentDecl()->isMemberSpecialization() &&
3994+
!CTPSD->getMostRecentDecl()->isMemberSpecialization())
39943995
continue;
39953996

39963997
TemplateDeductionInfo Info(Loc);
@@ -4037,8 +4038,7 @@ getPatternForClassTemplateSpecialization(
40374038
SmallVector<ClassTemplatePartialSpecializationDecl *, 4> PartialSpecs;
40384039
Template->getPartialSpecializations(PartialSpecs);
40394040
TemplateSpecCandidateSet FailedCandidates(PointOfInstantiation);
4040-
for (unsigned I = 0, N = PartialSpecs.size(); I != N; ++I) {
4041-
ClassTemplatePartialSpecializationDecl *Partial = PartialSpecs[I];
4041+
for (ClassTemplatePartialSpecializationDecl *Partial : PartialSpecs) {
40424042
// C++ [temp.spec.partial.member]p2:
40434043
// If the primary member template is explicitly specialized for a given
40444044
// (implicit) specialization of the enclosing class template, the
@@ -4049,8 +4049,8 @@ getPatternForClassTemplateSpecialization(
40494049
// primary member template and its other partial specializations are
40504050
// still considered for this specialization of the enclosing class
40514051
// template.
4052-
if (Template->isMemberSpecialization() &&
4053-
!Partial->isMemberSpecialization())
4052+
if (Template->getMostRecentDecl()->isMemberSpecialization() &&
4053+
!Partial->getMostRecentDecl()->isMemberSpecialization())
40544054
continue;
40554055

40564056
TemplateDeductionInfo Info(FailedCandidates.getLocation());

0 commit comments

Comments
 (0)