CIndex: Fix ReportSerializedDiagnostics to honor the DiagnosticClient contract
that diagnostics with a source location should occur inside
{Begin,End}SourceFile.

Note that code completion is currently passing in an invalid LangOptions object
due to its implementation, I need to sort this out with Doug.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@94927 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/CIndex/CIndexDiagnostic.cpp b/tools/CIndex/CIndexDiagnostic.cpp
index 52de8bb..c48872c 100644
--- a/tools/CIndex/CIndexDiagnostic.cpp
+++ b/tools/CIndex/CIndexDiagnostic.cpp
@@ -215,7 +215,8 @@
 void clang::ReportSerializedDiagnostics(const llvm::sys::Path &DiagnosticsPath,
                                         Diagnostic &Diags,
                                         unsigned num_unsaved_files,
-                                        struct CXUnsavedFile *unsaved_files) {
+                                        struct CXUnsavedFile *unsaved_files,
+                                        const LangOptions &LangOpts) {
   using llvm::MemoryBuffer;
   using llvm::StringRef;
   MemoryBuffer *F = MemoryBuffer::getFile(DiagnosticsPath.c_str());
@@ -244,6 +245,8 @@
     SourceMgr.overrideFileContents(File, Buffer);
   }
 
+  Diags.getClient()->BeginSourceFile(LangOpts, 0);
+
   // Parse the diagnostics, emitting them one by one until we've
   // exhausted the data.
   StringRef Buffer = F->getBuffer();
@@ -254,4 +257,6 @@
     if (!DB.isActive())
       return;
   }
+
+  Diags.getClient()->EndSourceFile();
 }