public override Task <IEnumerable <Diagnostic> > GetAllDiagnosticsAsync(
                Project project,
                CancellationToken cancellationToken
                )
            {
                var allDiagnosticsBuilder = ArrayBuilder <Diagnostic> .GetInstance();

                ImmutableArray <Diagnostic> diagnostics;

                if (!DocumentDiagnosticsMap.IsEmpty)
                {
                    foreach (var document in project.Documents)
                    {
                        if (DocumentDiagnosticsMap.TryGetValue(document, out diagnostics))
                        {
                            allDiagnosticsBuilder.AddRange(diagnostics);
                        }
                    }
                }

                if (ProjectDiagnosticsMap.TryGetValue(project, out diagnostics))
                {
                    allDiagnosticsBuilder.AddRange(diagnostics);
                }

                return(Task.FromResult <IEnumerable <Diagnostic> >(
                           allDiagnosticsBuilder.ToImmutableAndFree()
                           ));
            }
示例#2
0
            public override Task <IEnumerable <Diagnostic> > GetDocumentDiagnosticsAsync(Document document, CancellationToken cancellationToken)
            {
                if (DocumentDiagnosticsMap.TryGetValue(document, out var diagnostics))
                {
                    return(Task.FromResult <IEnumerable <Diagnostic> >(diagnostics));
                }

                return(SpecializedTasks.EmptyEnumerable <Diagnostic>());
            }