From 8b14f8fde447030ecd52631c9be9416cea9801c4 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 9 Nov 2009 16:04:45 +0000 Subject: 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 llvm-svn: 86550 --- clang/tools/c-index-test/c-index-test.c | 35 ++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'clang/tools/c-index-test/c-index-test.c') diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 82653357b10..0df590d8499 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/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"); } -- cgit v1.2.3