aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/c-index-test/c-index-test.c
diff options
context:
space:
mode:
authorMichael Wu <mwu.code@gmail.com>2018-08-03 05:20:23 +0000
committerMichael Wu <mwu.code@gmail.com>2018-08-03 05:20:23 +0000
commit40ff105663d9f55185d44844eddcbadf0b45360a (patch)
tree40fb5bf469866ea8a3f3f94f41a6ad0bcaa6c04c /clang/tools/c-index-test/c-index-test.c
parent21a8b605a1b3672384c7b14804f0288e1778fa36 (diff)
downloadllvm-40ff105663d9f55185d44844eddcbadf0b45360a.zip
llvm-40ff105663d9f55185d44844eddcbadf0b45360a.tar.gz
llvm-40ff105663d9f55185d44844eddcbadf0b45360a.tar.bz2
[libclang 6/8] Add support for reading implicit attributes
Summary: Having access to implicit attributes is sometimes useful so users of libclang don't have to duplicate some of the logic in sema. This depends on D49081 since it also adds a CXTranslationUnit flag. Reviewers: yvvan, jbcoe Reviewed By: yvvan Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D49631 llvm-svn: 338815
Diffstat (limited to 'clang/tools/c-index-test/c-index-test.c')
-rw-r--r--clang/tools/c-index-test/c-index-test.c22
1 files changed, 22 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 336e35b..41dbbe7 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -86,6 +86,8 @@ static unsigned getDefaultParsingOptions() {
options |= CXTranslationUnit_LimitSkipFunctionBodiesToPreamble;
if (getenv("CINDEXTEST_INCLUDE_ATTRIBUTED_TYPES"))
options |= CXTranslationUnit_IncludeAttributedTypes;
+ if (getenv("CINDEXTEST_VISIT_IMPLICIT_ATTRIBUTES"))
+ options |= CXTranslationUnit_VisitImplicitAttributes;
return options;
}
@@ -1783,6 +1785,23 @@ static enum CXChildVisitResult PrintTypeDeclaration(CXCursor cursor, CXCursor p,
}
/******************************************************************************/
+/* Declaration attributes testing */
+/******************************************************************************/
+
+static enum CXChildVisitResult PrintDeclAttributes(CXCursor cursor, CXCursor p,
+ CXClientData d) {
+ if (clang_isDeclaration(cursor.kind)) {
+ printf("\n");
+ PrintCursor(cursor, NULL);
+ return CXChildVisit_Recurse;
+ } else if (clang_isAttribute(cursor.kind)) {
+ printf(" ");
+ PrintCursor(cursor, NULL);
+ }
+ return CXChildVisit_Continue;
+}
+
+/******************************************************************************/
/* Target information testing. */
/******************************************************************************/
@@ -4793,6 +4812,9 @@ int cindextest_main(int argc, const char **argv) {
else if (argc > 2 && strcmp(argv[1], "-test-print-type-declaration") == 0)
return perform_test_load_source(argc - 2, argv + 2, "all",
PrintTypeDeclaration, 0);
+ else if (argc > 2 && strcmp(argv[1], "-test-print-decl-attributes") == 0)
+ return perform_test_load_source(argc - 2, argv + 2, "all",
+ PrintDeclAttributes, 0);
else if (argc > 2 && strcmp(argv[1], "-test-print-bitwidth") == 0)
return perform_test_load_source(argc - 2, argv + 2, "all",
PrintBitWidth, 0);