diff options
author | Evgeny Mankov <evgeny.mankov@gmail.com> | 2019-08-27 22:15:32 +0000 |
---|---|---|
committer | Evgeny Mankov <evgeny.mankov@gmail.com> | 2019-08-27 22:15:32 +0000 |
commit | 2ed2e62498b7cccf951b7c671498625cecd2a862 (patch) | |
tree | 55eec008498bc42eae38b77d850d0c7e8a042a48 /clang/tools/c-index-test/c-index-test.c | |
parent | 1fac68b0dc19b03fd2c5e9856f0f2c5a11691348 (diff) | |
download | llvm-2ed2e62498b7cccf951b7c671498625cecd2a862.zip llvm-2ed2e62498b7cccf951b7c671498625cecd2a862.tar.gz llvm-2ed2e62498b7cccf951b7c671498625cecd2a862.tar.bz2 |
[preprocessor] Add an opportunity to retain excluded conditional blocks
It is handy for clang tooling, for instance, in source to source transformation.
Reviewers: vpykhtin (Valery Pykhtin), erichkeane (Erich Keane)
Subscribers: rsmith (Richard Smith), akyrtzi (Argyrios Kyrtzidis)
Tags: #clang
Differential Revision: https://reviews.llvm.org/D66597
llvm-svn: 370123
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r-- | clang/tools/c-index-test/c-index-test.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c index 3375171..dc7e449 100644 --- a/clang/tools/c-index-test/c-index-test.c +++ b/clang/tools/c-index-test/c-index-test.c @@ -2181,6 +2181,34 @@ static int perform_single_file_parse(const char *filename) { return result; } +static int perform_file_retain_excluded_cb(const char *filename) { + CXIndex Idx; + CXTranslationUnit TU; + enum CXErrorCode Err; + int result; + + Idx = clang_createIndex(/* excludeDeclsFromPCH */1, + /* displayDiagnostics=*/1); + + Err = clang_parseTranslationUnit2(Idx, filename, + /*command_line_args=*/NULL, + /*num_command_line_args=*/0, + /*unsaved_files=*/NULL, + /*num_unsaved_files=*/0, + CXTranslationUnit_RetainExcludedConditionalBlocks, &TU); + if (Err != CXError_Success) { + fprintf(stderr, "Unable to load translation unit!\n"); + describeLibclangFailure(Err); + clang_disposeIndex(Idx); + return 1; + } + + result = perform_test_load(Idx, TU, /*filter=*/"all", /*prefix=*/NULL, FilteredPrintingVisitor, /*PostVisit=*/NULL, + /*CommentSchemaFile=*/NULL); + clang_disposeIndex(Idx); + return result; +} + /******************************************************************************/ /* Logic for testing clang_getCursor(). */ /******************************************************************************/ @@ -4849,6 +4877,8 @@ int cindextest_main(int argc, const char **argv) { } else if (argc >= 3 && strcmp(argv[1], "-single-file-parse") == 0) return perform_single_file_parse(argv[2]); + else if (argc >= 3 && strcmp(argv[1], "-retain-excluded-conditional-blocks") == 0) + return perform_file_retain_excluded_cb(argv[2]); else if (argc >= 4 && strcmp(argv[1], "-test-file-scan") == 0) return perform_file_scan(argv[2], argv[3], argc >= 5 ? argv[4] : 0); |