private async Task <ImmutableArray <DiagnosticData> > GetSpecificDiagnosticsAsync(object documentOrProject, LiveDiagnosticUpdateArgsId key, CancellationToken cancellationToken) { var versions = await GetVersionsAsync(documentOrProject, (StateType)key.Kind, cancellationToken).ConfigureAwait(false); var project = GetProject(documentOrProject); var stateSet = this.StateManager.GetOrCreateStateSet(project, key.Analyzer); if (stateSet == null) { return(ImmutableArray <DiagnosticData> .Empty); } var analyzers = Owner._stateManager.GetOrCreateAnalyzers(project); var driver = await GetDiagnosticAnalyzerDriverAsync(documentOrProject, analyzers, (StateType)key.Kind, cancellationToken).ConfigureAwait(false); var analysisData = await GetDiagnosticAnalysisDataAsync(driver, stateSet, (StateType)key.Kind, versions).ConfigureAwait(false); if (key.Kind != (int)StateType.Project) { return(analysisData.Items); } return(analysisData.Items.Where(d => { if (key.Key is DocumentId) { return object.Equals(d.DocumentId, key.Key); } if (key.Key is ProjectId) { return object.Equals(d.ProjectId, key.Key); } return false; }).ToImmutableArray()); }
private void RaiseDiagnosticsRemoved( StateType type, object key, StateSet stateSet, SolutionArgument solution, Action<DiagnosticsUpdatedArgs> raiseEvents) { // get right arg id for the given analyzer var id = new LiveDiagnosticUpdateArgsId(stateSet.Analyzer, key, (int)type, stateSet.ErrorSourceName); raiseEvents(DiagnosticsUpdatedArgs.DiagnosticsRemoved(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId)); }
private async Task<ImmutableArray<DiagnosticData>> GetSpecificDiagnosticsAsync(object documentOrProject, LiveDiagnosticUpdateArgsId key, CancellationToken cancellationToken) { var versions = await GetVersionsAsync(documentOrProject, (StateType)key.Kind, cancellationToken).ConfigureAwait(false); var project = GetProject(documentOrProject); var stateSet = this.StateManager.GetOrCreateStateSet(project, key.Analyzer); if (stateSet == null) { return ImmutableArray<DiagnosticData>.Empty; } var analyzers = Owner._stateManager.GetOrCreateAnalyzers(project); var driver = await GetDiagnosticAnalyzerDriverAsync(documentOrProject, analyzers, (StateType)key.Kind, cancellationToken).ConfigureAwait(false); var analysisData = await GetDiagnosticAnalysisDataAsync(driver, stateSet, (StateType)key.Kind, versions).ConfigureAwait(false); if (key.Kind != (int)StateType.Project) { return analysisData.Items; } return analysisData.Items.Where(d => { if (key.Key is DocumentId) { return object.Equals(d.DocumentId, key.Key); } if (key.Key is ProjectId) { return object.Equals(d.ProjectId, key.Key); } return false; }).ToImmutableArray(); }