From bb6afcb7f5f9c2e9121a548726d6d03283cb52bc Mon Sep 17 00:00:00 2001 From: Craig Silverstein Date: Sat, 6 Nov 2010 06:25:02 +0000 Subject: [PATCH] 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 --- include/clang/AST/RecursiveASTVisitor.h | 6 ++++++ 1 file changed, 6 insertions(+) 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(), -- 2.40.0