]> granicus.if.org Git - clang/commitdiff
Fix a bug where we were recursing on friend decls for friend
authorCraig Silverstein <csilvers2000@yahoo.com>
Sat, 6 Nov 2010 06:25:02 +0000 (06:25 +0000)
committerCraig Silverstein <csilvers2000@yahoo.com>
Sat, 6 Nov 2010 06:25:02 +0000 (06:25 +0000)
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

index 806fdd8723f4f05716569549e36147c2aae330d1..5a76fab396607dc0e32fe6fbfebd332783904d4c 100644 (file)
@@ -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(),