summaryrefslogtreecommitdiffstats
path: root/clang/tools
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-09-02 22:29:21 +0000
committerDouglas Gregor <dgregor@apple.com>2010-09-02 22:29:21 +0000
commitf24eaee2b33cb8de51fa7c2562cd270db117288a (patch)
treed5ea7e4d40305690f0d16db0afadea3178e9094f /clang/tools
parent7fd9aea67cebfc40e2de2861bdd6a31ec95c4819 (diff)
downloadbcm5719-llvm-f24eaee2b33cb8de51fa7c2562cd270db117288a.tar.gz
bcm5719-llvm-f24eaee2b33cb8de51fa7c2562cd270db117288a.zip
Teach libclang to visit OverloadExprs, so that we can reuse this
code. Also, teach it about explicitly-specified template arguments. llvm-svn: 112884
Diffstat (limited to 'clang/tools')
-rw-r--r--clang/tools/libclang/CIndex.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index f30dd61ece7..17afeca4970 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -391,7 +391,7 @@ public:
// FIXME: CXXNewExpr has poor source-location information
bool VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E);
// FIXME: UnaryTypeTraitExpr has poor source-location information.
- bool VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E);
+ bool VisitOverloadExpr(OverloadExpr *E);
};
} // end anonymous namespace
@@ -1610,7 +1610,7 @@ bool CursorVisitor::VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E) {
return false;
}
-bool CursorVisitor::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E) {
+bool CursorVisitor::VisitOverloadExpr(OverloadExpr *E) {
// Visit the nested-name-specifier.
if (NestedNameSpecifier *Qualifier = E->getQualifier())
if (VisitNestedNameSpecifier(Qualifier, E->getQualifierRange()))
@@ -1620,6 +1620,17 @@ bool CursorVisitor::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E) {
if (VisitDeclarationNameInfo(E->getNameInfo()))
return true;
+ // Visit the explicitly-specified template arguments.
+ if (const ExplicitTemplateArgumentList *ArgList
+ = E->getOptionalExplicitTemplateArgs()) {
+ for (const TemplateArgumentLoc *Arg = ArgList->getTemplateArgs(),
+ *ArgEnd = Arg + ArgList->NumTemplateArgs;
+ Arg != ArgEnd; ++Arg) {
+ if (VisitTemplateArgumentLoc(*Arg))
+ return true;
+ }
+ }
+
// FIXME: We don't have a way to visit all of the declarations referenced
// here.
return false;
OpenPOWER on IntegriCloud