diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-11-10 08:43:12 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-11-10 08:43:12 +0000 |
commit | d010ba47294d21bc303fdfb1bca4e18ea92e366c (patch) | |
tree | 6bb99a336fb8f7b134deaa9c837233e48786ba37 /clang/tools/libclang/CIndex.cpp | |
parent | 08ef466048e06328401fd06527b20315902cab19 (diff) | |
download | bcm5719-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.cpp | 7 |
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; |