From: Argyrios Kyrtzidis Date: Tue, 14 Jul 2009 03:20:31 +0000 (+0000) Subject: Handle redeclarations properly at the index-test tool. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c7377632d08e9a6492779b7241b76cbc42304050;p=clang Handle redeclarations properly at the index-test tool. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75605 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Index/multiple-redecls.c b/test/Index/multiple-redecls.c new file mode 100644 index 0000000000..6f1f75b02f --- /dev/null +++ b/test/Index/multiple-redecls.c @@ -0,0 +1,12 @@ +// RUN: clang-cc -emit-pch %s -o %t.ast && +// RUN: index-test %t.ast -point-at %s:8:4 -print-decls | count 2 && +// RUN: index-test %t.ast -point-at %s:8:4 -print-defs | count 1 + +static void foo(int x); + +static void bar(void) { + foo(10); +} + +void foo(int x) { +} diff --git a/tools/index-test/index-test.cpp b/tools/index-test/index-test.cpp index 63c86aac46..a188cd103e 100644 --- a/tools/index-test/index-test.cpp +++ b/tools/index-test/index-test.cpp @@ -134,15 +134,13 @@ static void ProcessDecl(Decl *D) { case PrintDecls : if (const FunctionDecl *FD = dyn_cast(D)) { - while (FD) { - ASTLocation(FD).print(OS); - FD = FD->getPreviousDeclaration(); - } + for (FunctionDecl::redecl_iterator I = FD->redecls_begin(), + E = FD->redecls_end(); I != E; ++I) + ASTLocation(*I).print(OS); } else if (const VarDecl *VD = dyn_cast(D)) { - while (VD) { - ASTLocation(VD).print(OS); - VD = VD->getPreviousDeclaration(); - } + for (VarDecl::redecl_iterator I = VD->redecls_begin(), + E = VD->redecls_end(); I != E; ++I) + ASTLocation(*I).print(OS); } else ASTLocation(D).print(OS); break;