diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-21 01:05:26 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-21 01:05:26 +0000 |
commit | e081a61bb0dc546fd623bf259435d17c9a4ea0d5 (patch) | |
tree | 726feb4ba5664d9f95d58e8f1a1638b3649317df /tools/c-index-test/c-index-test.c | |
parent | 98c6bda3be11b78a10026f142a399aa1918900f2 (diff) |
New libclang API to expose container type for code completion, from
Connor Wakamo!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135651 91177308-0d34-0410-b5e6-96231b3b80d8
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, 23 insertions, 1 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 6e0aaac73c..63031ce178 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -1171,8 +1171,9 @@ int perform_code_completion(int argc, const char **argv, int timing_only) { } if (results) { - unsigned i, n = results->NumResults; + unsigned i, n = results->NumResults, containerIsIncomplete = 0; unsigned long long contexts; + enum CXCursorKind containerKind; if (!timing_only) { /* Sort the code-completion results based on the typed text. */ clang_sortCodeCompletionResults(results->Results, results->NumResults); @@ -1190,6 +1191,27 @@ int perform_code_completion(int argc, const char **argv, int timing_only) { contexts = clang_codeCompleteGetContexts(results); print_completion_contexts(contexts, stdout); + containerKind = clang_codeCompleteGetContainerKind(results, &containerIsIncomplete); + + if (containerKind != CXCursor_InvalidCode) { + /* We have found a container */ + CXString containerUSR, containerKindSpelling; + containerKindSpelling = clang_getCursorKindSpelling(containerKind); + printf("Container Kind: %s\n", clang_getCString(containerKindSpelling)); + clang_disposeString(containerKindSpelling); + + if (containerIsIncomplete) { + printf("Container is incomplete\n"); + } + else { + printf("Container is complete\n"); + } + + containerUSR = clang_codeCompleteGetContainerUSR(results); + printf("Container USR: %s\n", clang_getCString(containerUSR)); + clang_disposeString(containerUSR); + } + clang_disposeCodeCompleteResults(results); } clang_disposeTranslationUnit(TU); |