@@ -406,15 +406,6 @@ struct TargetFinder {
406406 }
407407 }
408408 }
409- void VisitDependentTemplateSpecializationType (
410- const DependentTemplateSpecializationType *DTST) {
411- if (Outer.Resolver ) {
412- for (const NamedDecl *ND :
413- Outer.Resolver ->resolveTemplateSpecializationType (DTST)) {
414- Outer.add (ND, Flags);
415- }
416- }
417- }
418409 void VisitTypedefType (const TypedefType *TT) {
419410 if (shouldSkipTypedef (TT->getDecl ()))
420411 return ;
@@ -455,11 +446,13 @@ struct TargetFinder {
455446 // class template specializations have a (specialized) CXXRecordDecl.
456447 else if (const CXXRecordDecl *RD = TST->getAsCXXRecordDecl ())
457448 Outer.add (RD, Flags); // add(Decl) will despecialize if needed.
458- else {
449+ else if ( auto *TD = TST-> getTemplateName (). getAsTemplateDecl ())
459450 // fallback: the (un-specialized) declaration from primary template.
460- if (auto *TD = TST->getTemplateName ().getAsTemplateDecl ())
461- Outer.add (TD->getTemplatedDecl (), Flags | Rel::TemplatePattern);
462- }
451+ Outer.add (TD->getTemplatedDecl (), Flags | Rel::TemplatePattern);
452+ else if (Outer.Resolver )
453+ for (const NamedDecl *ND :
454+ Outer.Resolver ->resolveTemplateSpecializationType (TST))
455+ Outer.add (ND, Flags);
463456 }
464457 void
465458 VisitSubstTemplateTypeParmType (const SubstTemplateTypeParmType *STTPT) {
@@ -900,15 +893,6 @@ refInTypeLoc(TypeLoc L, const HeuristicResolver *Resolver) {
900893 DeclRelation::Alias, Resolver)});
901894 }
902895
903- void VisitDependentTemplateSpecializationTypeLoc (
904- DependentTemplateSpecializationTypeLoc L) {
905- Refs.push_back (
906- ReferenceLoc{L.getQualifierLoc (), L.getTemplateNameLoc (),
907- /* IsDecl=*/ false ,
908- explicitReferenceTargets (
909- DynTypedNode::create (L.getType ()), {}, Resolver)});
910- }
911-
912896 void VisitDependentNameTypeLoc (DependentNameTypeLoc L) {
913897 Refs.push_back (
914898 ReferenceLoc{L.getQualifierLoc (), L.getNameLoc (),
0 commit comments