[cfe-commits] r148160 - in /cfe/trunk: include/clang-c/Index.h tools/c-index-test/c-index-test.c tools/libclang/IndexBody.cpp tools/libclang/IndexingContext.cpp tools/libclang/IndexingContext.h
Argyrios Kyrtzidis
akyrtzi at gmail.com
Fri Jan 13 16:11:49 PST 2012
Author: akirtzidis
Date: Fri Jan 13 18:11:49 2012
New Revision: 148160
URL: http://llvm.org/viewvc/llvm-project?rev=148160&view=rev
Log:
[libclang] Add CXIndexOpt_IndexFunctionLocalSymbols indexing option to indicate
that one wants indexing callbacks for function-local symbols as well.
Modified:
cfe/trunk/include/clang-c/Index.h
cfe/trunk/tools/c-index-test/c-index-test.c
cfe/trunk/tools/libclang/IndexBody.cpp
cfe/trunk/tools/libclang/IndexingContext.cpp
cfe/trunk/tools/libclang/IndexingContext.h
Modified: cfe/trunk/include/clang-c/Index.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang-c/Index.h?rev=148160&r1=148159&r2=148160&view=diff
==============================================================================
--- cfe/trunk/include/clang-c/Index.h (original)
+++ cfe/trunk/include/clang-c/Index.h Fri Jan 13 18:11:49 2012
@@ -4455,7 +4455,13 @@
* for only one reference of an entity per source file that does not also
* include a declaration/definition of the entity.
*/
- CXIndexOpt_SuppressRedundantRefs = 0x1
+ CXIndexOpt_SuppressRedundantRefs = 0x1,
+
+ /**
+ * \brief Function-local symbols should be indexed. If this is not set
+ * function-local symbols will be ignored.
+ */
+ CXIndexOpt_IndexFunctionLocalSymbols = 0x2
} CXIndexOptFlags;
/**
Modified: cfe/trunk/tools/c-index-test/c-index-test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=148160&r1=148159&r2=148160&view=diff
==============================================================================
--- cfe/trunk/tools/c-index-test/c-index-test.c (original)
+++ cfe/trunk/tools/c-index-test/c-index-test.c Fri Jan 13 18:11:49 2012
@@ -1911,6 +1911,17 @@
index_indexEntityReference
};
+static unsigned getIndexOptions(void) {
+ unsigned index_opts;
+ index_opts = 0;
+ if (getenv("CINDEXTEST_SUPPRESSREFS"))
+ index_opts |= CXIndexOpt_SuppressRedundantRefs;
+ if (getenv("CINDEXTEST_INDEXLOCALSYMBOLS"))
+ index_opts |= CXIndexOpt_IndexFunctionLocalSymbols;
+
+ return index_opts;
+}
+
static int index_file(int argc, const char **argv) {
const char *check_prefix;
CXIndex Idx;
@@ -1946,10 +1957,7 @@
index_data.fail_for_error = 0;
index_data.abort = 0;
- index_opts = 0;
- if (getenv("CINDEXTEST_SUPPRESSREFS"))
- index_opts |= CXIndexOpt_SuppressRedundantRefs;
-
+ index_opts = getIndexOptions();
idxAction = clang_IndexAction_create(Idx);
result = clang_indexSourceFile(idxAction, &index_data,
&IndexCB,sizeof(IndexCB), index_opts,
@@ -2001,10 +2009,7 @@
index_data.fail_for_error = 0;
index_data.abort = 0;
- index_opts = 0;
- if (getenv("CINDEXTEST_SUPPRESSREFS"))
- index_opts |= CXIndexOpt_SuppressRedundantRefs;
-
+ index_opts = getIndexOptions();
idxAction = clang_IndexAction_create(Idx);
result = clang_indexTranslationUnit(idxAction, &index_data,
&IndexCB,sizeof(IndexCB),
Modified: cfe/trunk/tools/libclang/IndexBody.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/IndexBody.cpp?rev=148160&r1=148159&r2=148160&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/IndexBody.cpp (original)
+++ cfe/trunk/tools/libclang/IndexBody.cpp Fri Jan 13 18:11:49 2012
@@ -84,6 +84,12 @@
Parent, ParentDC, E);
return true;
}
+
+ bool VisitDeclStmt(DeclStmt *S) {
+ if (IndexCtx.indexFunctionLocalSymbols())
+ IndexCtx.indexDeclGroupRef(S->getDeclGroup());
+ return true;
+ }
};
} // anonymous namespace
Modified: cfe/trunk/tools/libclang/IndexingContext.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/IndexingContext.cpp?rev=148160&r1=148159&r2=148160&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/IndexingContext.cpp (original)
+++ cfe/trunk/tools/libclang/IndexingContext.cpp Fri Jan 13 18:11:49 2012
@@ -551,7 +551,7 @@
return false;
if (Loc.isInvalid())
return false;
- if (D->getParentFunctionOrMethod())
+ if (!indexFunctionLocalSymbols() && D->getParentFunctionOrMethod())
return false;
if (isNotFromSourceFile(D->getLocation()))
return false;
Modified: cfe/trunk/tools/libclang/IndexingContext.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/IndexingContext.h?rev=148160&r1=148159&r2=148160&view=diff
==============================================================================
--- cfe/trunk/tools/libclang/IndexingContext.h (original)
+++ cfe/trunk/tools/libclang/IndexingContext.h Fri Jan 13 18:11:49 2012
@@ -324,6 +324,10 @@
return IndexOptions & CXIndexOpt_SuppressRedundantRefs;
}
+ bool indexFunctionLocalSymbols() const {
+ return IndexOptions & CXIndexOpt_IndexFunctionLocalSymbols;
+ }
+
bool shouldAbort();
bool hasDiagnosticCallback() const { return CB.diagnostic; }
More information about the cfe-commits
mailing list