diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-12-09 22:28:32 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-12-09 22:28:32 +0000 |
commit | 0373fcc3e5b205cc26656c70d7dff737b0e08345 (patch) | |
tree | 7acf261c88c2bedc525a2640b1422048a419b3a1 | |
parent | 52a9b5aa5d994a22f309c62a9e0bbc070ee5eced (diff) |
Add clang_getDiagnosticSetFromTU() to libclang. Fixes <rdar://problem/10553081>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146287 91177308-0d34-0410-b5e6-96231b3b80d8
-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 |