]> granicus.if.org Git - clang/commitdiff
Add clang_getDiagnosticSetFromTU() to libclang. Fixes <rdar://problem/10553081>.
authorTed Kremenek <kremenek@apple.com>
Fri, 9 Dec 2011 22:28:32 +0000 (22:28 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 9 Dec 2011 22:28:32 +0000 (22:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146287 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang-c/Index.h
tools/libclang/CIndexDiagnostic.cpp
tools/libclang/libclang.exports

index dac8b54094f1b755c1c2b04d568f893acb005193..65e98ade51f59f7041cadde8c0405b42547fc4fd 100644 (file)
@@ -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.
  */
index a29e3a60e04b604388b700760492339a7ef57767..ceb640532be58a01da64275b9b1329d1765e2027 100644 (file)
@@ -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
index 5d37b596620cf1f29e2b0ed2bff95f376cfd2ad6..b028bb460289a6b3fab215f9f199361e09ea8f72 100644 (file)
@@ -97,6 +97,7 @@ clang_getDiagnosticNumFixIts
 clang_getDiagnosticNumRanges
 clang_getDiagnosticOption
 clang_getDiagnosticRange
+clang_getDiagnosticSetFromTU
 clang_getDiagnosticSeverity
 clang_getDiagnosticSpelling
 clang_getElementType