]> granicus.if.org Git - clang/commitdiff
Fix the RecursiveASTVisitor to not traverse C++ default parameters twice.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 16 Feb 2012 02:02:14 +0000 (02:02 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 16 Feb 2012 02:02:14 +0000 (02:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150651 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/RecursiveASTVisitor.h
test/Index/index-refs.cpp

index a113a94846fed57bcff64f1a78021f1b4e4accef..a0f4950a0472abd10b8fb3ee1975ad995aa4adfb 100644 (file)
@@ -1663,7 +1663,9 @@ DEF_TRAVERSE_DECL(CXXDestructorDecl, {
 template<typename Derived>
 bool RecursiveASTVisitor<Derived>::TraverseVarHelper(VarDecl *D) {
   TRY_TO(TraverseDeclaratorHelper(D));
-  TRY_TO(TraverseStmt(D->getInit()));
+  // Default params are taken care of when we traverse the ParmVarDecl.
+  if (!isa<ParmVarDecl>(D))
+    TRY_TO(TraverseStmt(D->getInit()));
   return true;
 }
 
index fa4b4b3a09c31b93c517843ff8e4cadeeb26de8d..56afa08ec88a1ba82cd8e0242de19937710ecac2 100644 (file)
@@ -107,3 +107,4 @@ void foo4(int p = default_param);
 
 // CHECK:      [indexEntityReference]: kind: variable | name: array_size | {{.*}} | loc: 59:22
 // CHECK:      [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19
+// CHECK-NOT:  [indexEntityReference]: kind: variable | name: default_param | {{.*}} | loc: 62:19