15#ifndef LLVM_CLANG_TOOLING_REFACTORING_RECURSIVESYMBOLVISITOR_H
16#define LLVM_CLANG_TOOLING_REFACTORING_RECURSIVESYMBOLVISITOR_H
34 :
SM(
SM), LangOpts(LangOpts) {}
44 return isa<CXXConversionDecl>(
D) ?
true : visit(
D,
D->getLocation());
65 return visit(
Expr->getFoundDecl(),
Expr->getLocation());
69 return visit(
Expr->getFoundDecl().getDecl(),
Expr->getMemberLoc());
73 for (
unsigned I = 0,
E = S->getNumComponents(); I !=
E; ++I) {
90 if (
const auto *TemplateTypeParm =
91 dyn_cast<TemplateTypeParmType>(
Loc.getType())) {
92 if (!visit(TemplateTypeParm->getDecl(), TypeBeginLoc, TypeEndLoc))
95 if (
const auto *TemplateSpecType =
96 dyn_cast<TemplateSpecializationType>(
Loc.getType())) {
97 if (!visit(TemplateSpecType->getTemplateName().getAsTemplateDecl(),
98 TypeBeginLoc, TypeEndLoc))
101 if (
const Type *TP =
Loc.getTypePtr()) {
102 if (TP->getTypeClass() == clang::Type::Record)
103 return visit(TP->getAsCXXRecordDecl(), TypeBeginLoc, TypeEndLoc);
127 if (
D.isFieldDesignator()) {
129 if (!visit(
Decl,
D.getFieldLoc(),
D.getFieldLoc()))