Pass through context for DiagHandler in VFS

This allows the unit tests to not use global state when checking
diagnostics.

llvm-svn: 202072
diff --git a/clang/lib/Basic/VirtualFileSystem.cpp b/clang/lib/Basic/VirtualFileSystem.cpp
index a107db6..6aef524 100644
--- a/clang/lib/Basic/VirtualFileSystem.cpp
+++ b/clang/lib/Basic/VirtualFileSystem.cpp
@@ -357,6 +357,7 @@
   /// Takes ownership of \p Buffer.
   static VFSFromYAML *create(MemoryBuffer *Buffer,
                              SourceMgr::DiagHandlerTy DiagHandler,
+                             void *DiagContext,
                              IntrusiveRefCntPtr<FileSystem> ExternalFS);
 
   ErrorOr<Status> status(const Twine &Path) LLVM_OVERRIDE;
@@ -645,12 +646,13 @@
 
 VFSFromYAML *VFSFromYAML::create(MemoryBuffer *Buffer,
                                  SourceMgr::DiagHandlerTy DiagHandler,
+                                 void *DiagContext,
                                  IntrusiveRefCntPtr<FileSystem> ExternalFS) {
 
   SourceMgr SM;
   yaml::Stream Stream(Buffer, SM);
 
-  SM.setDiagHandler(DiagHandler);
+  SM.setDiagHandler(DiagHandler, DiagContext);
   yaml::document_iterator DI = Stream.begin();
   yaml::Node *Root = DI->getRoot();
   if (DI == Stream.end() || !Root) {
@@ -753,8 +755,9 @@
 
 IntrusiveRefCntPtr<FileSystem>
 vfs::getVFSFromYAML(MemoryBuffer *Buffer, SourceMgr::DiagHandlerTy DiagHandler,
+                    void *DiagContext,
                     IntrusiveRefCntPtr<FileSystem> ExternalFS) {
-  return VFSFromYAML::create(Buffer, DiagHandler, ExternalFS);
+  return VFSFromYAML::create(Buffer, DiagHandler, DiagContext, ExternalFS);
 }
 
 UniqueID vfs::getNextVirtualUniqueID() {