diff options
-rw-r--r-- | include/clang-c/Index.h | 9 | ||||
-rw-r--r-- | tools/libclang/CIndexDiagnostic.cpp | 11 | ||||
-rw-r--r-- | tools/libclang/libclang.exports | 1 |
3 files changed, 19 insertions, 2 deletions
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 @@ -620,6 +620,15 @@ 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. */ CINDEX_LINKAGE void clang_disposeDiagnostic(CXDiagnostic 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<CXDiagnosticSetImpl*>(D); if (Index >= Diags->getNumDiagnostics()) return 0; return Diags->getDiagnostic(Index); } + +CXDiagnosticSet clang_getDiagnosticSetFromTU(CXTranslationUnit Unit) { + if (!Unit->TUData) + return 0; + return static_cast<CXDiagnostic>(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 |