diff options
Diffstat (limited to 'tools/libclang/CIndexDiagnostic.cpp')
-rw-r--r-- | tools/libclang/CIndexDiagnostic.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
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 |