Skip to content

Commit fd5d1cb

Browse files
[clang][Index] Use HeuristicResolver in IndexTypeSourceInfo as well (#128106)
1 parent f0134e6 commit fd5d1cb

File tree

1 file changed

+3
-21
lines changed

1 file changed

+3
-21
lines changed

clang/lib/Index/IndexTypeSourceInfo.cpp

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "clang/AST/PrettyPrinter.h"
1212
#include "clang/AST/RecursiveASTVisitor.h"
1313
#include "clang/AST/TypeLoc.h"
14+
#include "clang/Sema/HeuristicResolver.h"
1415
#include "llvm/ADT/ScopeExit.h"
1516

1617
using namespace clang;
@@ -207,27 +208,8 @@ class TypeIndexer : public RecursiveASTVisitor<TypeIndexer> {
207208
}
208209

209210
bool VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
210-
const DependentNameType *DNT = TL.getTypePtr();
211-
const NestedNameSpecifier *NNS = DNT->getQualifier();
212-
const Type *T = NNS->getAsType();
213-
if (!T)
214-
return true;
215-
const TemplateSpecializationType *TST =
216-
T->getAs<TemplateSpecializationType>();
217-
if (!TST)
218-
return true;
219-
TemplateName TN = TST->getTemplateName();
220-
const ClassTemplateDecl *TD =
221-
dyn_cast_or_null<ClassTemplateDecl>(TN.getAsTemplateDecl());
222-
if (!TD)
223-
return true;
224-
CXXRecordDecl *RD = TD->getTemplatedDecl();
225-
if (!RD->hasDefinition())
226-
return true;
227-
RD = RD->getDefinition();
228-
DeclarationName Name(DNT->getIdentifier());
229-
std::vector<const NamedDecl *> Symbols = RD->lookupDependentName(
230-
Name, [](const NamedDecl *ND) { return isa<TypeDecl>(ND); });
211+
std::vector<const NamedDecl *> Symbols =
212+
IndexCtx.getResolver()->resolveDependentNameType(TL.getTypePtr());
231213
if (Symbols.size() != 1)
232214
return true;
233215
return IndexCtx.handleReference(Symbols[0], TL.getNameLoc(), Parent,

0 commit comments

Comments
 (0)