summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndexCodeCompletion.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-11-17 00:13:31 +0000
committerDouglas Gregor <dgregor@apple.com>2010-11-17 00:13:31 +0000
commit68dbaead7b3ecd2a13e38488e4aa32c363733d4d (patch)
treea668996ed2c7ddf8270656a22a4bcf410ef69e20 /clang/tools/libclang/CIndexCodeCompletion.cpp
parent5b26f65b3d63cf230f20c0e6bff4bc6253032f70 (diff)
downloadbcm5719-llvm-68dbaead7b3ecd2a13e38488e4aa32c363733d4d.tar.gz
bcm5719-llvm-68dbaead7b3ecd2a13e38488e4aa32c363733d4d.zip
Fix source-range information for Objective-C properties. Previously,
we were just getting a range covering only the property name, which is certainly not correct (and broke token annotation, among other things). Also, teach libclang about the relationship between @synthesize/@dynamic and @property, so we get property name and cursor-reference information for @synthesize and @dynamic. llvm-svn: 119409
Diffstat (limited to 'clang/tools/libclang/CIndexCodeCompletion.cpp')
-rw-r--r--clang/tools/libclang/CIndexCodeCompletion.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp
index d0eb5cc7e33..74c3274ad61 100644
--- a/clang/tools/libclang/CIndexCodeCompletion.cpp
+++ b/clang/tools/libclang/CIndexCodeCompletion.cpp
@@ -250,9 +250,20 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults {
llvm::SmallVector<const llvm::MemoryBuffer *, 1> TemporaryBuffers;
};
+/// \brief Tracks the number of code-completion result objects that are
+/// currently active.
+///
+/// Used for debugging purposes only.
+static unsigned CodeCompletionResultObjects;
+
AllocatedCXCodeCompleteResults::AllocatedCXCodeCompleteResults()
: CXCodeCompleteResults(), Diag(new Diagnostic),
- SourceMgr(*Diag, FileMgr, FileSystemOpts) { }
+ SourceMgr(*Diag, FileMgr, FileSystemOpts) {
+ if (getenv("LIBCLANG_OBJTRACKING")) {
+ ++CodeCompletionResultObjects;
+ fprintf(stderr, "+++ %d completion results\n", CodeCompletionResultObjects);
+ }
+}
AllocatedCXCodeCompleteResults::~AllocatedCXCodeCompleteResults() {
for (unsigned I = 0, N = NumResults; I != N; ++I)
@@ -263,6 +274,11 @@ AllocatedCXCodeCompleteResults::~AllocatedCXCodeCompleteResults() {
TemporaryFiles[I].eraseFromDisk();
for (unsigned I = 0, N = TemporaryBuffers.size(); I != N; ++I)
delete TemporaryBuffers[I];
+
+ if (getenv("LIBCLANG_OBJTRACKING")) {
+ --CodeCompletionResultObjects;
+ fprintf(stderr, "--- %d completion results\n", CodeCompletionResultObjects);
+ }
}
} // end extern "C"
OpenPOWER on IntegriCloud