From 66373dd2d508407ed5894ad65f654eea8d892319 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Fri, 30 Mar 2012 00:19:05 +0000 Subject: [PATCH] [libclang] Have c-index-test output more information about a cursor with -cursor-at: -the location of the cursor -its extent -its spelling Part of radar://11113120 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153707 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Index/get-cursor.m | 8 ++++++-- tools/c-index-test/c-index-test.c | 12 ++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/test/Index/get-cursor.m b/test/Index/get-cursor.m index e1329a4b5e..830f9828b9 100644 --- a/test/Index/get-cursor.m +++ b/test/Index/get-cursor.m @@ -31,10 +31,11 @@ @implementation rdar10902015 -struct S {}; +struct S { int x; }; -(void)mm:(struct S*)s { rdar10902015 *i = 0; + s->x = 0; } @end @@ -46,7 +47,10 @@ struct S {}; // CHECK-WITH-WEAK: ObjCClassRef=Foo:8:8 // RUN: c-index-test -cursor-at=%s:20:10 %s | FileCheck -check-prefix=CHECK-METHOD %s -// CHECK-METHOD: ObjCInstanceMethodDecl=name:20:7 +// CHECK-METHOD: 20:7 ObjCInstanceMethodDecl=name:20:7 Extent=[20:1 - 20:12] // RUN: c-index-test -cursor-at=%s:37:17 %s | FileCheck -check-prefix=CHECK-IN-IMPL %s // CHECK-IN-IMPL: VarDecl=i:37:17 + +// RUN: c-index-test -cursor-at=%s:38:6 -cursor-at=%s:40:11 %s | FileCheck -check-prefix=CHECK-MEMBERREF %s +// CHECK-MEMBERREF: 38:6 MemberRefExpr=x:34:16 SingleRefName=[38:6 - 38:7] RefName=[38:6 - 38:7] Extent=[38:3 - 38:7] diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 39bb8ebed0..5dd9254631 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -1439,7 +1439,19 @@ static int inspect_cursor_at(int argc, const char **argv) { if (I + 1 == Repeats) { CXCompletionString completionString = clang_getCursorCompletionString( Cursor); + CXSourceLocation CursorLoc = clang_getCursorLocation(Cursor); + CXString Spelling; + const char *cspell; + unsigned line, column; + clang_getSpellingLocation(CursorLoc, 0, &line, &column, 0); + printf("%d:%d ", line, column); PrintCursor(Cursor); + PrintCursorExtent(Cursor); + Spelling = clang_getCursorSpelling(Cursor); + cspell = clang_getCString(Spelling); + if (cspell && strlen(cspell) != 0) + printf(" Spelling=%s", cspell); + clang_disposeString(Spelling); if (completionString != NULL) { printf("\nCompletion string: "); print_completion_string(completionString, stdout); -- 2.40.0