aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorEvgeny Mankov <evgeny.mankov@gmail.com>2019-08-27 22:15:32 +0000
committerEvgeny Mankov <evgeny.mankov@gmail.com>2019-08-27 22:15:32 +0000
commit2ed2e62498b7cccf951b7c671498625cecd2a862 (patch)
tree55eec008498bc42eae38b77d850d0c7e8a042a48 /clang/tools/c-index-test/c-index-test.c
parent1fac68b0dc19b03fd2c5e9856f0f2c5a11691348 (diff)
downloadllvm-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.c30
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);