aboutsummaryrefslogtreecommitdiff
path: root/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-11-09 16:04:45 +0000
committerDouglas Gregor <dgregor@apple.com>2009-11-09 16:04:45 +0000
commit3ac738567fdf4df636b9e76c5a2d3dc3d6f80235 (patch)
treeb75b81da1d4a99bdf03af9cefab8a882958270ac /tools/c-index-test/c-index-test.c
parentcd5a5056e0fbac624c504c4a33d57160723cd71d (diff)
Minor cleanup for CIndex-based code-completion:
- Provide an actual test for code-completion via CIndex. - Actually print optional strings in c-index-test - Export clang_getCompletionChunkCompletionString from CIndex git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86550 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.c35
1 files changed, 24 insertions, 11 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 82653357b1..0df590d849 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -158,24 +158,37 @@ clang_getCompletionChunkKindSpelling(enum CXCompletionChunkKind Kind) {
return "Unknown";
}
-void print_completion_result(CXCompletionResult *completion_result,
- CXClientData client_data) {
- FILE *file = (FILE *)client_data;
+void print_completion_string(CXCompletionString completion_string, FILE *file) {
int I, N;
-
- fprintf(file, "%s:",
- clang_getCursorKindSpelling(completion_result->CursorKind));
- N = clang_getNumCompletionChunks(completion_result->CompletionString);
+
+ N = clang_getNumCompletionChunks(completion_string);
for (I = 0; I != N; ++I) {
- const char *text
- = clang_getCompletionChunkText(completion_result->CompletionString, I);
-
enum CXCompletionChunkKind Kind
- = clang_getCompletionChunkKind(completion_result->CompletionString, I);
+ = clang_getCompletionChunkKind(completion_string, I);
+
+ if (Kind == CXCompletionChunk_Optional) {
+ fprintf(file, "{Optional ");
+ print_completion_string(
+ clang_getCompletionChunkCompletionString(completion_string, I),
+ file);
+ fprintf(file, "}");
+ continue;
+ }
+
+ const char *text
+ = clang_getCompletionChunkText(completion_string, I);
fprintf(file, "{%s %s}",
clang_getCompletionChunkKindSpelling(Kind),
text? text : "");
}
+}
+
+void print_completion_result(CXCompletionResult *completion_result,
+ CXClientData client_data) {
+ FILE *file = (FILE *)client_data;
+ fprintf(file, "%s:",
+ clang_getCursorKindSpelling(completion_result->CursorKind));
+ print_completion_string(completion_result->CompletionString, file);
fprintf(file, "\n");
}