diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-07 20:44:15 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-12-07 20:44:15 +0000 |
commit | b3c16bad2096aca843807b35012ac82c405c907c (patch) | |
tree | ee141bb12c55751a893f9c7302c34c969cdb0b8e /clang/tools/c-index-test/c-index-test.c | |
parent | 520028802c12f6a7af3eda8a2aba1dc3805f57c6 (diff) | |
download | bcm5719-llvm-b3c16bad2096aca843807b35012ac82c405c907c.tar.gz bcm5719-llvm-b3c16bad2096aca843807b35012ac82c405c907c.zip |
[libclang] Fix indexing of C++ bases in a C++ class.
llvm-svn: 146068
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index fb41d137447..18a0a6b28dd 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -1699,6 +1699,15 @@ static void printEntityInfo(const char *cb, printf(" | USR: %s", info->USR); } +static void printBaseClassInfo(CXClientData client_data, + const CXIdxBaseClassInfo *info) { + printEntityInfo(" <base>", client_data, info->base); + printf(" | cursor: "); + PrintCursor(info->cursor); + printf(" | loc: "); + printCXIndexLoc(info->loc); +} + static void printProtocolList(const CXIdxObjCProtocolRefListInfo *ProtoInfo, CXClientData client_data) { unsigned i; @@ -1783,6 +1792,7 @@ static void index_indexDeclaration(CXClientData client_data, const CXIdxObjCCategoryDeclInfo *CatInfo; const CXIdxObjCInterfaceDeclInfo *InterInfo; const CXIdxObjCProtocolRefListInfo *ProtoInfo; + const CXIdxCXXClassDeclInfo *CXXClassInfo; unsigned i; index_data = (IndexData *)client_data; @@ -1832,12 +1842,7 @@ static void index_indexDeclaration(CXClientData client_data, if ((InterInfo = clang_index_getObjCInterfaceDeclInfo(info))) { if (InterInfo->superInfo) { - printEntityInfo(" <base>", client_data, - InterInfo->superInfo->base); - printf(" | cursor: "); - PrintCursor(InterInfo->superInfo->cursor); - printf(" | loc: "); - printCXIndexLoc(InterInfo->superInfo->loc); + printBaseClassInfo(client_data, InterInfo->superInfo); printf("\n"); } } @@ -1846,6 +1851,13 @@ static void index_indexDeclaration(CXClientData client_data, printProtocolList(ProtoInfo, client_data); } + if ((CXXClassInfo = clang_index_getCXXClassDeclInfo(info))) { + for (i = 0; i != CXXClassInfo->numBases; ++i) { + printBaseClassInfo(client_data, CXXClassInfo->bases[i]); + printf("\n"); + } + } + if (info->declAsContainer) clang_index_setClientContainer(info->declAsContainer, makeClientContainer(info->entityInfo, info->loc)); |