/// \brief Takes a list of diagnostics that have been generated but not matched
/// by an expected-* directive and produces a diagnostic to the user from this.
static unsigned PrintUnexpected(DiagnosticsEngine &Diags, const llvm::SourceMgr *SourceMgr,
                                const_diag_iterator diag_begin,
                                const_diag_iterator diag_end,
                                DiagnosticsEngine::Level Kind) {
  if (diag_begin == diag_end) return 0;

  for (const_diag_iterator I = diag_begin, E = diag_end; I != E; ++I) {
    switch(Kind) {
      case DiagnosticsEngine::Error: Diags.ReportError(I->first,I->second); break;
      case DiagnosticsEngine::Warning: Diags.ReportWarning(I->first,I->second); break;
      case DiagnosticsEngine::Note: Diags.ReportNote(I->first,I->second); break;
      default: break;
  return std::distance(diag_begin, diag_end);