private void ReportAnalyzerExceptions(Project project, ImmutableDictionary <DiagnosticAnalyzer, ImmutableArray <DiagnosticData> > exceptions)
 {
     foreach (var(analyzer, diagnostics) in exceptions)
     {
         foreach (var diagnostic in diagnostics)
         {
             _hostDiagnosticUpdateSourceOpt?.ReportAnalyzerDiagnostic(analyzer, diagnostic, project);
         }
     }
 }
 private void ReportAnalyzerExceptions(Project project, ImmutableDictionary <DiagnosticAnalyzer, ImmutableArray <DiagnosticData> > exceptions)
 {
     foreach (var kv in exceptions)
     {
         var analyzer = kv.Key;
         foreach (var diagnostic in kv.Value)
         {
             _hostDiagnosticUpdateSource.ReportAnalyzerDiagnostic(analyzer, diagnostic, project);
         }
     }
 }
        internal void ReportAnalyzerExceptionDiagnostic(DiagnosticAnalyzer analyzer, Diagnostic exceptionDiagnostic, Compilation compilation)
        {
            Contract.ThrowIfFalse(AnalyzerManager.IsAnalyzerExceptionDiagnostic(exceptionDiagnostic));

            if (_hostDiagnosticUpdateSource == null)
            {
                return;
            }

            if (compilation != null)
            {
                var effectiveDiagnostic = CompilationWithAnalyzers.GetEffectiveDiagnostics(ImmutableArray.Create(exceptionDiagnostic), compilation).SingleOrDefault();
                if (effectiveDiagnostic == null)
                {
                    return;
                }
                else
                {
                    exceptionDiagnostic = effectiveDiagnostic;
                }
            }

            _hostDiagnosticUpdateSource.ReportAnalyzerDiagnostic(analyzer, exceptionDiagnostic, this.Project.Solution.Workspace, this.Project);
        }