From: Ted Kremenek Date: Fri, 9 Dec 2011 22:28:32 +0000 (+0000) Subject: Add clang_getDiagnosticSetFromTU() to libclang. Fixes . X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0373fcc3e5b205cc26656c70d7dff737b0e08345;p=clang Add clang_getDiagnosticSetFromTU() to libclang. Fixes . git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146287 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h index dac8b54094..65e98ade51 100644 --- a/include/clang-c/Index.h +++ b/include/clang-c/Index.h @@ -619,6 +619,15 @@ CINDEX_LINKAGE unsigned clang_getNumDiagnostics(CXTranslationUnit Unit); CINDEX_LINKAGE CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, unsigned Index); +/** + * \brief Retrieve the complete set of diagnostics associated with a + * translation unit. + * + * \param Unit the translation unit to query. + */ +CINDEX_LINKAGE CXDiagnosticSet + clang_getDiagnosticSetFromTU(CXTranslationUnit Unit); + /** * \brief Destroy a diagnostic. */ diff --git a/tools/libclang/CIndexDiagnostic.cpp b/tools/libclang/CIndexDiagnostic.cpp index a29e3a60e0..ceb640532b 100644 --- a/tools/libclang/CIndexDiagnostic.cpp +++ b/tools/libclang/CIndexDiagnostic.cpp @@ -98,15 +98,22 @@ unsigned clang_getNumDiagnostics(CXTranslationUnit Unit) { } CXDiagnostic clang_getDiagnostic(CXTranslationUnit Unit, unsigned Index) { - if (!Unit->TUData) + CXDiagnosticSet D = clang_getDiagnosticSetFromTU(Unit); + if (!D) return 0; - CXDiagnosticSetImpl *Diags = lazyCreateDiags(Unit); + CXDiagnosticSetImpl *Diags = static_cast(D); if (Index >= Diags->getNumDiagnostics()) return 0; return Diags->getDiagnostic(Index); } + +CXDiagnosticSet clang_getDiagnosticSetFromTU(CXTranslationUnit Unit) { + if (!Unit->TUData) + return 0; + return static_cast(lazyCreateDiags(Unit)); +} void clang_disposeDiagnostic(CXDiagnostic Diagnostic) { // No-op. Kept as a legacy API. CXDiagnostics are now managed diff --git a/tools/libclang/libclang.exports b/tools/libclang/libclang.exports index 5d37b59662..b028bb4602 100644 --- a/tools/libclang/libclang.exports +++ b/tools/libclang/libclang.exports @@ -97,6 +97,7 @@ clang_getDiagnosticNumFixIts clang_getDiagnosticNumRanges clang_getDiagnosticOption clang_getDiagnosticRange +clang_getDiagnosticSetFromTU clang_getDiagnosticSeverity clang_getDiagnosticSpelling clang_getElementType