summaryrefslogtreecommitdiffstats
path: root/clang/tools/libclang/CIndex.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2011-11-10 08:43:12 +0000
committerTed Kremenek <kremenek@apple.com>2011-11-10 08:43:12 +0000
commitd010ba47294d21bc303fdfb1bca4e18ea92e366c (patch)
tree6bb99a336fb8f7b134deaa9c837233e48786ba37 /clang/tools/libclang/CIndex.cpp
parent08ef466048e06328401fd06527b20315902cab19 (diff)
downloadbcm5719-llvm-d010ba47294d21bc303fdfb1bca4e18ea92e366c.tar.gz
bcm5719-llvm-d010ba47294d21bc303fdfb1bca4e18ea92e366c.zip
serialized diagnostics: implement full deserialization of clang diagnostics via the libclang API.
I've tested it on simple cases and it works. Test cases to follow as well as a few tweaks. llvm-svn: 144269
Diffstat (limited to 'clang/tools/libclang/CIndex.cpp')
-rw-r--r--clang/tools/libclang/CIndex.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index 0f93931034d..f9a873819a9 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -58,6 +58,7 @@ CXTranslationUnit cxtu::MakeCXTranslationUnit(ASTUnit *TU) {
CXTranslationUnit D = new CXTranslationUnitImpl();
D->TUData = TU;
D->StringPool = createCXStringPool();
+ D->Diagnostics = 0;
return D;
}
@@ -2562,6 +2563,7 @@ void clang_disposeTranslationUnit(CXTranslationUnit CTUnit) {
delete static_cast<ASTUnit *>(CTUnit->TUData);
disposeCXStringPool(CTUnit->StringPool);
+ delete static_cast<CXDiagnosticSetImpl *>(CTUnit->Diagnostics);
delete CTUnit;
}
}
@@ -2582,6 +2584,11 @@ static void clang_reparseTranslationUnit_Impl(void *UserData) {
ReparseTranslationUnitInfo *RTUI =
static_cast<ReparseTranslationUnitInfo*>(UserData);
CXTranslationUnit TU = RTUI->TU;
+
+ // Reset the associated diagnostics.
+ delete static_cast<CXDiagnosticSetImpl*>(TU->Diagnostics);
+ TU->Diagnostics = 0;
+
unsigned num_unsaved_files = RTUI->num_unsaved_files;
struct CXUnsavedFile *unsaved_files = RTUI->unsaved_files;
unsigned options = RTUI->options;
OpenPOWER on IntegriCloud