diff options
author | Craig Silverstein <csilvers2000@yahoo.com> | 2010-11-06 06:25:02 +0000 |
---|---|---|
committer | Craig Silverstein <csilvers2000@yahoo.com> | 2010-11-06 06:25:02 +0000 |
commit | bb6afcb7f5f9c2e9121a548726d6d03283cb52bc (patch) | |
tree | 521ff7280cd4a8d910d616ea9d99d2f5d9e76c14 | |
parent | 08985b91e5a87e7731ba24c675f2dc9f9cb645d4 (diff) |
Fix a bug where we were recursing on friend decls for friend
functions, but not for friend types.
Reviewed by wan
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118323 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/RecursiveASTVisitor.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/clang/AST/RecursiveASTVisitor.h b/include/clang/AST/RecursiveASTVisitor.h index 806fdd8723..5a76fab396 100644 --- a/include/clang/AST/RecursiveASTVisitor.h +++ b/include/clang/AST/RecursiveASTVisitor.h @@ -995,11 +995,17 @@ DEF_TRAVERSE_DECL(FileScopeAsmDecl, { }) DEF_TRAVERSE_DECL(FriendDecl, { + // At most one of these two will be non-NULL. TRY_TO(TraverseDecl(D->getFriendDecl())); + if (D->getFriendType()) + TRY_TO(TraverseTypeLoc(D->getFriendType()->getTypeLoc())); }) DEF_TRAVERSE_DECL(FriendTemplateDecl, { + // At most one of these two will be non-NULL. TRY_TO(TraverseDecl(D->getFriendDecl())); + if (D->getFriendType()) + TRY_TO(TraverseTypeLoc(D->getFriendType()->getTypeLoc())); for (unsigned I = 0, E = D->getNumTemplateParameters(); I < E; ++I) { TemplateParameterList *TPL = D->getTemplateParameterList(I); for (TemplateParameterList::iterator ITPL = TPL->begin(), |