Exemplo n.º 1
0
        private void ClearProjectState(Project project, DiagnosticAnalyzer analyzer, DiagnosticState state)
        {
            // remove saved cache
            state.Remove(project.Id);

            // raise diagnostic updated event
            var solutionArgs = new SolutionArgument(project);

            RaiseDiagnosticsUpdated(StateType.Project, project.Id, analyzer, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
        }
Exemplo n.º 2
0
 private void RaiseDiagnosticsUpdated(
     StateType type, object key, ProviderId providerId, SolutionArgument solution, ImmutableArray <DiagnosticData> diagnostics)
 {
     if (_owner != null)
     {
         var id = new ArgumentKey(providerId, type, key);
         _owner.RaiseDiagnosticsUpdated(this,
                                        new DiagnosticsUpdatedArgs(id, _analyzersAndState.Workspace, solution.Solution, solution.ProjectId, solution.DocumentId, diagnostics));
     }
 }
Exemplo n.º 3
0
        private void ClearDocumentState(Document document, DiagnosticAnalyzer analyzer, StateType type, DiagnosticState state)
        {
            // remove saved info
            state.Remove(document.Id);

            // raise diagnostic updated event
            var documentId   = document.Id;
            var solutionArgs = new SolutionArgument(document);

            RaiseDiagnosticsUpdated(type, document.Id, analyzer, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
        }
Exemplo n.º 4
0
        private void ClearProjectState(Project project, StateSet stateSet)
        {
            var state = stateSet.GetState(StateType.Project);

            // remove saved cache
            state.Remove(project.Id);

            // raise diagnostic updated event
            var solutionArgs = new SolutionArgument(project);

            RaiseDiagnosticsUpdated(StateType.Project, project.Id, stateSet, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
        }
Exemplo n.º 5
0
        private void RaiseDiagnosticsUpdated(
            StateType type, object key, DiagnosticAnalyzer analyzer, SolutionArgument solution, ImmutableArray <DiagnosticData> diagnostics)
        {
            if (Owner == null)
            {
                return;
            }

            var id = new ArgumentKey(analyzer, type, key);

            Owner.RaiseDiagnosticsUpdated(this,
                                          new DiagnosticsUpdatedArgs(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId, diagnostics));
        }
        private void RaiseDiagnosticsRemoved(
            StateType type, object key, StateSet stateSet, SolutionArgument solution)
        {
            if (Owner == null)
            {
                return;
            }

            // get right arg id for the given analyzer
            var id = CreateArgumentKey(type, key, stateSet);

            Owner.RaiseDiagnosticsUpdated(this,
                                          DiagnosticsUpdatedArgs.DiagnosticsRemoved(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId));
        }
Exemplo n.º 7
0
        private void RaiseDiagnosticsUpdated(
            StateType type, object key, StateSet stateSet, SolutionArgument solution, ImmutableArray <DiagnosticData> diagnostics)
        {
            if (Owner == null)
            {
                return;
            }

            // get right arg id for the given analyzer
            var id = stateSet.ErrorSourceName != null ?
                     new HostAnalyzerKey(stateSet.Analyzer, type, key, stateSet.ErrorSourceName) : (object)new ArgumentKey(stateSet.Analyzer, type, key);

            Owner.RaiseDiagnosticsUpdated(this,
                                          new DiagnosticsUpdatedArgs(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId, diagnostics));
        }
Exemplo n.º 8
0
        public override void RemoveProject(ProjectId projectId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveProject, GetRemoveLogMessage, projectId, CancellationToken.None))
            {
                foreach (var stateSet in _stateManager.GetStateSets(projectId))
                {
                    stateSet.Remove(projectId);

                    var solutionArgs = new SolutionArgument(null, projectId, null);
                    RaiseDiagnosticsUpdated(StateType.Project, projectId, stateSet, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
                }
            }

            _stateManager.RemoveStateSet(projectId);
        }
Exemplo n.º 9
0
        private void ClearDocumentState(Document document, StateSet stateSet, StateType type, bool raiseEvent)
        {
            var state = stateSet.GetState(type);

            // remove saved info
            state.Remove(document.Id);

            if (raiseEvent)
            {
                // raise diagnostic updated event
                var documentId   = document.Id;
                var solutionArgs = new SolutionArgument(document);

                RaiseDiagnosticsUpdated(type, document.Id, stateSet, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
            }
        }
Exemplo n.º 10
0
        public override void RemoveDocument(DocumentId documentId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveDocument, GetRemoveLogMessage, documentId, CancellationToken.None))
            {
                _memberRangeMap.Remove(documentId);

                foreach (var stateSet in _stateManager.GetStateSets(documentId.ProjectId))
                {
                    stateSet.Remove(documentId);

                    var solutionArgs = new SolutionArgument(null, documentId.ProjectId, documentId);
                    for (var stateType = 0; stateType < s_stateTypeCount; stateType++)
                    {
                        RaiseDiagnosticsUpdated((StateType)stateType, documentId, stateSet, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
                    }
                }
            }
        }
Exemplo n.º 11
0
        private async Task RemoveCacheDataAsync(Project project, DiagnosticState state, ProviderId providerId, CancellationToken cancellationToken)
        {
            try
            {
                // remove memory cache
                state.Remove(project.Id);

                // remove persistent cache
                await state.PersistAsync(project, AnalysisData.Empty, cancellationToken).ConfigureAwait(false);

                // raise diagnostic updated event
                var solutionArgs = new SolutionArgument(project);
                RaiseDiagnosticsUpdated(StateType.Project, project.Id, providerId, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
            }
            catch (Exception e) when(FatalError.ReportUnlessCanceled(e))
            {
                throw ExceptionUtilities.Unreachable;
            }
        }
Exemplo n.º 12
0
        public override void RemoveProject(ProjectId projectId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveProject, GetRemoveLogMessage, projectId, CancellationToken.None))
            {
                foreach (var stateProviderIdAndType in _analyzersAndState.GetAllExistingDiagnosticStates(projectId, StateType.Project))
                {
                    var state      = stateProviderIdAndType.Item1;
                    var providerId = stateProviderIdAndType.Item2;

                    if (state != null)
                    {
                        state.Remove(projectId);
                    }

                    var solutionArgs = new SolutionArgument(null, projectId, null);

                    RaiseDiagnosticsUpdated(StateType.Project, projectId, providerId, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
                }

                _analyzersAndState.RemoveProjectAnalyzersAndStates(projectId);
            }
        }
Exemplo n.º 13
0
        private async Task RemoveCacheDataAsync(Document document, DiagnosticState state, ProviderId providerId, StateType type, CancellationToken cancellationToken)
        {
            try
            {
                // remove memory cache
                state.Remove(document.Id);

                // remove persistent cache
                await state.PersistAsync(document, AnalysisData.Empty, cancellationToken).ConfigureAwait(false);

                // raise diagnostic updated event
                var documentId   = type == StateType.Project ? null : document.Id;
                var projectId    = document.Project.Id;
                var key          = documentId ?? (object)projectId;
                var solutionArgs = new SolutionArgument(document.Project.Solution, projectId, documentId);

                RaiseDiagnosticsUpdated(type, key, providerId, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
            }
            catch (Exception e) when(FatalError.ReportUnlessCanceled(e))
            {
                throw ExceptionUtilities.Unreachable;
            }
        }
Exemplo n.º 14
0
        public override void RemoveDocument(DocumentId documentId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveDocument, GetRemoveLogMessage, documentId, CancellationToken.None))
            {
                _memberRangeMap.Remove(documentId);

                foreach (var stateProviderIdAndType in _analyzersAndState.GetAllExistingDiagnosticStates(documentId.ProjectId))
                {
                    var state      = stateProviderIdAndType.Item1;
                    var providerId = stateProviderIdAndType.Item2;
                    var type       = stateProviderIdAndType.Item3;

                    if (state != null)
                    {
                        state.Remove(documentId);
                    }

                    var solutionArgs = new SolutionArgument(null, documentId.ProjectId, documentId);

                    RaiseDiagnosticsUpdated(type, documentId, providerId, solutionArgs, ImmutableArray <DiagnosticData> .Empty);
                }
            }
        }
 private void RaiseDiagnosticsRemoved(
     StateType type, object key, StateSet stateSet, SolutionArgument solution)
 {
     RaiseDiagnosticsRemoved(type, key, stateSet, solution, Owner.RaiseDiagnosticsUpdated);
 }
Exemplo n.º 16
0
 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 void ClearDocumentState(Document document, StateSet stateSet, StateType type, bool raiseEvent)
        {
            var state = stateSet.GetState(type);

            // remove saved info
            state.Remove(document.Id);

            if (raiseEvent)
            {
                // raise diagnostic updated event
                var documentId = document.Id;
                var solutionArgs = new SolutionArgument(document);

                RaiseDiagnosticsUpdated(type, document.Id, stateSet, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
            }
        }
        private void ClearProjectState(Project project, StateSet stateSet)
        {
            var state = stateSet.GetState(StateType.Project);

            // remove saved cache
            state.Remove(project.Id);

            // raise diagnostic updated event
            var solutionArgs = new SolutionArgument(project);
            RaiseDiagnosticsUpdated(StateType.Project, project.Id, stateSet, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
        }
        public override void RemoveProject(ProjectId projectId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveProject, GetRemoveLogMessage, projectId, CancellationToken.None))
            {
                foreach (var stateSet in _stateManager.GetStateSets(projectId))
                {
                    stateSet.Remove(projectId);

                    var solutionArgs = new SolutionArgument(null, projectId, null);
                    RaiseDiagnosticsUpdated(StateType.Project, projectId, stateSet, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                }
            }

            _stateManager.RemoveStateSet(projectId);
        }
        private void RaiseDiagnosticsUpdated(
            StateType type, object key, StateSet stateSet, SolutionArgument solution, ImmutableArray<DiagnosticData> diagnostics)
        {
            if (Owner == null)
            {
                return;
            }

            // get right arg id for the given analyzer
            var id = stateSet.ErrorSourceName != null ?
                (object)new HostAnalyzerKey(stateSet.Analyzer, type, key, stateSet.ErrorSourceName) : (object)new ArgumentKey(stateSet.Analyzer, type, key);

            Owner.RaiseDiagnosticsUpdated(this,
                new DiagnosticsUpdatedArgs(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId, diagnostics));
        }
            public void RemoveDocument(DocumentId documentId)
            {
                using (Logger.LogBlock(FunctionId.Diagnostics_RemoveDocument, GetRemoveLogMessage, documentId, CancellationToken.None))
                {
                    _memberRangeMap.Remove(documentId);

                    foreach (var stateProviderIdAndType in _analyzersAndState.GetAllExistingDiagnosticStates(documentId.ProjectId))
                    {
                        var state = stateProviderIdAndType.Item1;
                        var providerId = stateProviderIdAndType.Item2;
                        var type = stateProviderIdAndType.Item3;

                        if (state != null)
                        {
                            state.Remove(documentId);
                        }

                        var solutionArgs = new SolutionArgument(null, documentId.ProjectId, documentId);

                        RaiseDiagnosticsUpdated(type, documentId, providerId, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                    }
                }
            }
        public override void RemoveDocument(DocumentId documentId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveDocument, GetRemoveLogMessage, documentId, CancellationToken.None))
            {
                _memberRangeMap.Remove(documentId);

                foreach (var stateSet in _stateManager.GetStateSets(documentId.ProjectId))
                {
                    stateSet.Remove(documentId);

                    var solutionArgs = new SolutionArgument(null, documentId.ProjectId, documentId);
                    for (var stateType = 0; stateType < s_stateTypeCount; stateType++)
                    {
                        RaiseDiagnosticsUpdated((StateType)stateType, documentId, stateSet, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                    }
                }
            }
        }
            public void RemoveProject(ProjectId projectId)
            {
                using (Logger.LogBlock(FunctionId.Diagnostics_RemoveProject, GetRemoveLogMessage, projectId, CancellationToken.None))
                {
                    foreach (var stateProviderIdAndType in _analyzersAndState.GetAllExistingDiagnosticStates(projectId, StateType.Project))
                    {
                        var state = stateProviderIdAndType.Item1;
                        var providerId = stateProviderIdAndType.Item2;

                        if (state != null)
                        {
                            state.Remove(projectId);
                        }

                        var solutionArgs = new SolutionArgument(null, projectId, null);

                        RaiseDiagnosticsUpdated(StateType.Project, projectId, providerId, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                    }

                    _analyzersAndState.RemoveProjectAnalyzersAndStates(projectId);
                }
            }
 private void RaiseDiagnosticsCreated(
     StateType type, object key, StateSet stateSet, SolutionArgument solution, ImmutableArray<DiagnosticData> diagnostics)
 {
     RaiseDiagnosticsCreated(type, key, stateSet, solution, diagnostics, Owner.RaiseDiagnosticsUpdated);
 }
 private void RaiseDiagnosticsUpdated(
     StateType type, object key, ProviderId providerId, SolutionArgument solution, ImmutableArray<DiagnosticData> diagnostics)
 {
     if (_owner != null)
     {
         var id = new ArgumentKey(providerId, type, key);
         _owner.RaiseDiagnosticsUpdated(this,
             new DiagnosticsUpdatedArgs(id, _analyzersAndState.Workspace, solution.Solution, solution.ProjectId, solution.DocumentId, diagnostics));
     }
 }
            private async Task RemoveCacheDataAsync(Document document, DiagnosticState state, ProviderId providerId, StateType type, CancellationToken cancellationToken)
            {
                try
                {
                    // remove memory cache
                    state.Remove(document.Id);

                    // remove persistent cache
                    await state.PersistAsync(document, AnalysisData.Empty, cancellationToken).ConfigureAwait(false);

                    // raise diagnostic updated event
                    var documentId = type == StateType.Project ? null : document.Id;
                    var projectId = document.Project.Id;
                    var key = documentId ?? (object)projectId;
                    var solutionArgs = new SolutionArgument(document.Project.Solution, projectId, documentId);

                    RaiseDiagnosticsUpdated(type, key, providerId, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                }
                catch (Exception e) when (FatalError.ReportUnlessCanceled(e))
                {
                    throw ExceptionUtilities.Unreachable;
                }
            }
            private async Task RemoveCacheDataAsync(Project project, DiagnosticState state, ProviderId providerId, CancellationToken cancellationToken)
            {
                try
                {
                    // remove memory cache
                    state.Remove(project.Id);

                    // remove persistent cache
                    await state.PersistAsync(project, AnalysisData.Empty, cancellationToken).ConfigureAwait(false);

                    // raise diagnostic updated event
                    var solutionArgs = new SolutionArgument(project);
                    RaiseDiagnosticsUpdated(StateType.Project, project.Id, providerId, solutionArgs, ImmutableArray<DiagnosticData>.Empty);
                }
                catch (Exception e) when (FatalError.ReportUnlessCanceled(e))
                {
                    throw ExceptionUtilities.Unreachable;
                }
            }
        public override void RemoveDocument(DocumentId documentId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveDocument, GetRemoveLogMessage, documentId, CancellationToken.None))
            {
                _memberRangeMap.Remove(documentId);

                var stateSets = _stateManager.GetStateSets(documentId.ProjectId);

                foreach (var stateSet in stateSets)
                {
                    stateSet.Remove(documentId);
                }

                Owner.RaiseBulkDiagnosticsUpdated(raiseEvents =>
                {
                    foreach (var stateSet in stateSets)
                    {
                        var solutionArgs = new SolutionArgument(null, documentId.ProjectId, documentId);
                        for (var stateType = 0; stateType < s_stateTypeCount; stateType++)
                        {
                            RaiseDiagnosticsRemoved((StateType)stateType, documentId, stateSet, solutionArgs, raiseEvents);
                        }
                    }
                });
            }
        }
 private void RaiseDiagnosticsRemoved(
     StateType type, object key, StateSet stateSet, SolutionArgument solution, Action<DiagnosticsUpdatedArgs> raiseEvents)
 {
     // get right arg id for the given analyzer
     var id = CreateArgumentKey(type, key, stateSet);
     raiseEvents(DiagnosticsUpdatedArgs.DiagnosticsRemoved(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId));
 }
        public override void RemoveProject(ProjectId projectId)
        {
            using (Logger.LogBlock(FunctionId.Diagnostics_RemoveProject, GetRemoveLogMessage, projectId, CancellationToken.None))
            {
                var stateSets = _stateManager.GetStateSets(projectId);

                foreach (var stateSet in stateSets)
                {
                    stateSet.Remove(projectId);
                }

                _stateManager.RemoveStateSet(projectId);

                Owner.RaiseBulkDiagnosticsUpdated(raiseEvents =>
                {
                    foreach (var stateSet in stateSets)
                    {
                        var solutionArgs = new SolutionArgument(null, projectId, null);
                        RaiseDiagnosticsRemoved(StateType.Project, projectId, stateSet, solutionArgs, raiseEvents);
                    }
                });
            }
        }
        private void RaiseDiagnosticsRemoved(
            StateType type, object key, StateSet stateSet, SolutionArgument solution)
        {
            if (Owner == null)
            {
                return;
            }

            // get right arg id for the given analyzer
            var id = CreateArgumentKey(type, key, stateSet);

            Owner.RaiseDiagnosticsUpdated(this,
                DiagnosticsUpdatedArgs.DiagnosticsRemoved(id, Workspace, solution.Solution, solution.ProjectId, solution.DocumentId));
        }