From 7232697fed64cafff3e8b81cd3fe9c5d37851b88 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 llvm-svn: 118323 --- clang/include/clang/AST/RecursiveASTVisitor.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h index 806fdd8723f4..5a76fab39660 100644 --- a/clang/include/clang/AST/RecursiveASTVisitor.h +++ b/clang/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(),