summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-02-16 02:02:14 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2012-02-16 02:02:14 +0000
commit85620ad239a8e6442e0eaa7e6f7c6c39f7f77401 (patch)
tree722db446476d36dc88ed201553d4e3a826c05c58
parentffbf9f140625180b634d183b450e5023b864a98c (diff)
downloadbcm5719-llvm-85620ad239a8e6442e0eaa7e6f7c6c39f7f77401.tar.gz
bcm5719-llvm-85620ad239a8e6442e0eaa7e6f7c6c39f7f77401.zip
Fix the RecursiveASTVisitor to not traverse C++ default parameters twice.
llvm-svn: 150651
-rw-r--r--clang/include/clang/AST/RecursiveASTVisitor.h4
-rw-r--r--clang/test/Index/index-refs.cpp1
2 files changed, 4 insertions, 1 deletions
diff --git a/clang/include/clang/AST/RecursiveASTVisitor.h b/clang/include/clang/AST/RecursiveASTVisitor.h
index a113a94846f..a0f4950a047 100644
--- a/clang/include/clang/AST/RecursiveASTVisitor.h
+++ b/clang/include/clang/AST/RecursiveASTVisitor.h
@@ -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;
}
diff --git a/clang/test/Index/index-refs.cpp b/clang/test/Index/index-refs.cpp
index fa4b4b3a09c..56afa08ec88 100644
--- a/clang/test/Index/index-refs.cpp
+++ b/clang/test/Index/index-refs.cpp
@@ -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
OpenPOWER on IntegriCloud