diff options
Diffstat (limited to 'tools/c-index-test/c-index-test.c')
-rw-r--r-- | tools/c-index-test/c-index-test.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index fb41d13744..18a0a6b28d 100644 --- a/tools/c-index-test/c-index-test.c +++ b/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)); |