diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-09-02 22:29:21 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-09-02 22:29:21 +0000 |
| commit | f24eaee2b33cb8de51fa7c2562cd270db117288a (patch) | |
| tree | d5ea7e4d40305690f0d16db0afadea3178e9094f /clang/tools | |
| parent | 7fd9aea67cebfc40e2de2861bdd6a31ec95c4819 (diff) | |
| download | bcm5719-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.cpp | 15 |
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; |

