diff options
author | Daniel Grumberg <dgrumberg@apple.com> | 2023-03-30 14:51:45 +0100 |
---|---|---|
committer | Daniel Grumberg <dgrumberg@apple.com> | 2023-03-30 18:13:58 +0100 |
commit | 142c3d9d1414847fd154c300ff12505283027505 (patch) | |
tree | 36efb64924a140ff96f2a2c52fc08bff8bb4f269 /clang/tools/c-index-test/c-index-test.c | |
parent | b6eadb6c1b509921ccbc30861c0e70b5df8b3253 (diff) | |
download | llvm-142c3d9d1414847fd154c300ff12505283027505.zip llvm-142c3d9d1414847fd154c300ff12505283027505.tar.gz llvm-142c3d9d1414847fd154c300ff12505283027505.tar.bz2 |
[clang][ExtractAPI] Reland ExtractAPI for libclang improvements
This relands the changes that were originally introduced by:
- https://reviews.llvm.org/D146656
- https://reviews.llvm.org/D147138
This also fixes the leak that led to these changes being reverted
Differential Revision: https://reviews.llvm.org/D147234
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 448435e..68a560c 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -3,6 +3,7 @@ #include "clang-c/BuildSystem.h" #include "clang-c/CXCompilationDatabase.h" #include "clang-c/CXErrorCode.h" +#include "clang-c/CXSourceLocation.h" #include "clang-c/CXString.h" #include "clang-c/Documentation.h" #include "clang-c/Index.h" @@ -4881,6 +4882,22 @@ dispose_index: return result; } +static void inspect_single_symbol_sgf_cursor(CXCursor Cursor) { + CXSourceLocation CursorLoc; + CXString SGFData; + const char *SGF; + unsigned line, column; + CursorLoc = clang_getCursorLocation(Cursor); + clang_getSpellingLocation(CursorLoc, 0, &line, &column, 0); + + SGFData = clang_getSymbolGraphForCursor(Cursor); + SGF = clang_getCString(SGFData); + if (SGF) + printf("%d:%d: %s\n", line, column, SGF); + + clang_disposeString(SGFData); +} + /******************************************************************************/ /* Command line processing. */ /******************************************************************************/ @@ -4940,6 +4957,7 @@ static void print_usage(void) { " c-index-test -print-usr-file <file>\n"); fprintf(stderr, " c-index-test -single-symbol-sgfs <symbol filter> {<args>*}\n" + " c-index-test -single-symbol-sgf-at=<site> {<args>*}\n" " c-index-test -single-symbol-sgf-for=<usr> {<args>}*\n"); fprintf(stderr, " c-index-test -write-pch <file> <compiler arguments>\n" @@ -5076,6 +5094,9 @@ int cindextest_main(int argc, const char **argv) { else if (argc > 3 && strcmp(argv[1], "-single-symbol-sgfs") == 0) return perform_test_load_source(argc - 3, argv + 3, argv[2], PrintSingleSymbolSGFs, NULL); + else if (argc > 2 && strstr(argv[1], "-single-symbol-sgf-at=") == argv[1]) + return inspect_cursor_at( + argc, argv, "-single-symbol-sgf-at=", inspect_single_symbol_sgf_cursor); else if (argc > 2 && strstr(argv[1], "-single-symbol-sgf-for=") == argv[1]) return perform_test_single_symbol_sgf(argv[1], argc - 2, argv + 2); |