diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-08-22 23:15:52 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-08-22 23:15:52 +0000 |
commit | b3dd988abdd8d048ac999a5713239c95692e528c (patch) | |
tree | 22fc665b73435bbe6bd9bd57f6f3f79c7048ae8d /tools/c-index-test/c-index-test.c | |
parent | 834a5bd311b4a32f89937ca5b6dd2b4111891859 (diff) |
[libclang] c-index-test: Make the printing of the overrides list of a cursor in
a deterministic order, to avoid random test failures.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162408 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 | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 5df21ec2a8..2cbeadcaba 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -554,6 +554,19 @@ static void PrintCursorComments(CXTranslationUnit TU, } } +typedef struct { + unsigned line; + unsigned col; +} LineCol; + +static int lineCol_cmp(const void *p1, const void *p2) { + const LineCol *lhs = p1; + const LineCol *rhs = p2; + if (lhs->line != rhs->line) + return (int)lhs->line - (int)rhs->line; + return (int)lhs->col - (int)rhs->col; +} + static void PrintCursor(CXCursor Cursor, CommentXMLValidationData *ValidationData) { CXTranslationUnit TU = clang_Cursor_getTranslationUnit(Cursor); @@ -718,13 +731,21 @@ static void PrintCursor(CXCursor Cursor, clang_getOverriddenCursors(Cursor, &overridden, &num_overridden); if (num_overridden) { unsigned I; + LineCol lineCols[50]; + assert(num_overridden <= 50); printf(" [Overrides "); for (I = 0; I != num_overridden; ++I) { CXSourceLocation Loc = clang_getCursorLocation(overridden[I]); clang_getSpellingLocation(Loc, 0, &line, &column, 0); + lineCols[I].line = line; + lineCols[I].col = column; + } + // Make the order of the override list deterministic. + qsort(lineCols, num_overridden, sizeof(LineCol), lineCol_cmp); + for (I = 0; I != num_overridden; ++I) { if (I) printf(", "); - printf("@%d:%d", line, column); + printf("@%d:%d", lineCols[I].line, lineCols[I].col); } printf("]"); clang_disposeOverriddenCursors(overridden); |