[libclang] Indexing API:

-For indexDeclaration, also pass the declaration attributes as an array of cursors.
-Rename CXIndexOpt_OneRefPerFile -> CXIndexOpt_SuppressRedundantRefs, and only pass
  a reference if a declaration/definition does not exist in the file.
-Other fixes.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144942 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index c479278..750b519 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -1741,6 +1741,7 @@
   const CXIdxObjCCategoryDeclInfo *CatInfo;
   const CXIdxObjCInterfaceDeclInfo *InterInfo;
   const CXIdxObjCProtocolRefListInfo *ProtoInfo;
+  unsigned i;
   index_data = (IndexData *)client_data;
 
   printEntityInfo("[indexDeclaration]", client_data, info->entityInfo);
@@ -1755,6 +1756,13 @@
   printf(" | isContainer: %d", info->isContainer);
   printf(" | isImplicit: %d\n", info->isImplicit);
 
+  for (i = 0; i != info->numAttributes; ++i) {
+    printf("     <attribute>: ");
+    const CXIdxAttrInfo *Attr = info->attributes[i]; 
+    PrintCursor(Attr->cursor);
+    printf("\n");
+  }
+
   if (clang_index_isEntityObjCContainerKind(info->entityInfo->kind)) {
     const char *kindName = 0;
     CXIdxObjCContainerKind K = clang_index_getObjCContainerDeclInfo(info)->kind;
@@ -1813,7 +1821,7 @@
   printf(" | refkind: ");
   switch (info->kind) {
   case CXIdxEntityRef_Direct: printf("direct"); break;
-  case CXIdxEntityRef_ImplicitProperty: printf("implicit prop"); break;
+  case CXIdxEntityRef_Implicit: printf("implicit"); break;
   }
   printf("\n");
 }
@@ -1833,6 +1841,7 @@
   const char *check_prefix;
   CXIndex CIdx;
   IndexData index_data;
+  unsigned index_opts;
   int result;
 
   check_prefix = 0;
@@ -1854,9 +1863,12 @@
   index_data.first_check_printed = 0;
   index_data.fail_for_error = 0;
 
+  index_opts = 0;
+  if (getenv("CINDEXTEST_SUPPRESSREFS"))
+    index_opts |= CXIndexOpt_SuppressRedundantRefs;
+
   result = clang_indexSourceFile(CIdx, &index_data,
-                                 &IndexCB,sizeof(IndexCB),
-                                 CXIndexOpt_OneRefPerFile,
+                                 &IndexCB,sizeof(IndexCB), index_opts,
                                  0, argv, argc, 0, 0, 0, 0);
   if (index_data.fail_for_error)
     return -1;
@@ -1869,6 +1881,7 @@
   CXTranslationUnit TU;
   const char *check_prefix;
   IndexData index_data;
+  unsigned index_opts;
   int result;
 
   check_prefix = 0;
@@ -1898,9 +1911,13 @@
   index_data.first_check_printed = 0;
   index_data.fail_for_error = 0;
 
+  index_opts = 0;
+  if (getenv("CINDEXTEST_SUPPRESSREFS"))
+    index_opts |= CXIndexOpt_SuppressRedundantRefs;
+  
   result = clang_indexTranslationUnit(TU, &index_data,
                                       &IndexCB,sizeof(IndexCB),
-                                      CXIndexOpt_OneRefPerFile);
+                                      index_opts);
   if (index_data.fail_for_error)
     return -1;