aboutsummaryrefslogtreecommitdiff
path: root/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/c-index-test/c-index-test.c')
-rw-r--r--tools/c-index-test/c-index-test.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index e7043c1482..b403863992 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -32,6 +32,32 @@ static void TranslationUnitVisitor(CXTranslationUnit Unit, CXCursor Cursor,
clang_getCursorLine(Cursor),
clang_getCursorColumn(Cursor));
+ if (Cursor.kind == CXCursor_FunctionDefn) {
+ const char *startBuf, *endBuf;
+ unsigned startLine, startColumn, endLine, endColumn;
+ clang_getDefinitionSpellingAndExtent(Cursor, &startBuf, &endBuf,
+ &startLine, &startColumn,
+ &endLine, &endColumn);
+ /* Probe the entire body, looking for "refs". */
+ unsigned curLine = startLine, curColumn = startColumn;
+ while (startBuf <= endBuf) {
+ if (*startBuf == '\n') {
+ startBuf++;
+ curLine++;
+ curColumn = 1;
+ }
+ CXCursor Ref = clang_getCursor(Unit, clang_getCursorSource(Cursor),
+ curLine, curColumn);
+ if (Ref.kind != CXCursor_FunctionDecl) {
+ PrintCursor(Ref);
+ printf("(Context: %s", clang_getDeclSpelling(Ref.decl));
+ printf(" Source: %s (%d:%d))\n", clang_getCursorSource(Ref),
+ curLine, curColumn);
+ }
+ startBuf++;
+ curColumn++;
+ }
+ }
clang_loadDeclaration(Cursor.decl, DeclVisitor, 0);
}
}