Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove dead code from diagnostics subsystem #77034

Merged
merged 5 commits into from
Feb 5, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,23 @@
using System;
using System.Collections.Immutable;

namespace Microsoft.CodeAnalysis.Diagnostics.EngineV2
namespace Microsoft.CodeAnalysis.Diagnostics.EngineV2;

internal partial class DiagnosticIncrementalAnalyzer
{
internal partial class DiagnosticIncrementalAnalyzer
/// <summary>
/// EventArgs for <see cref="StateManager.ProjectAnalyzerReferenceChanged"/>
///
/// this event args contains information such as <see cref="Project"/> the <see cref="AnalyzerReference"/> has changed
/// and what <see cref="StateSet"/> has changed.
/// </summary>
private sealed class ProjectAnalyzerReferenceChangedEventArgs : EventArgs
{
/// <summary>
/// EventArgs for <see cref="StateManager.ProjectAnalyzerReferenceChanged"/>
///
/// this event args contains information such as <see cref="Project"/> the <see cref="AnalyzerReference"/> has changed
/// and what <see cref="StateSet"/> has changed.
/// </summary>
private class ProjectAnalyzerReferenceChangedEventArgs : EventArgs
{
public readonly Project Project;
public readonly ImmutableArray<StateSet> Added;
public readonly ImmutableArray<StateSet> Removed;
public readonly ImmutableArray<StateSet> Removed;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the above two values were never read.


public ProjectAnalyzerReferenceChangedEventArgs(Project project, ImmutableArray<StateSet> added, ImmutableArray<StateSet> removed)
{
Project = project;
Added = added;
Removed = removed;
}
public ProjectAnalyzerReferenceChangedEventArgs(ImmutableArray<StateSet> removed)
{
Removed = removed;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,7 @@ private async Task<ProjectAnalyzerStateSets> UpdateProjectStateSetsAsync(Project
if (projectStateSets == null)
{
projectStateSets = CreateProjectStateSets(project);

analyzerReferenceChangedEventArgs = GetProjectAnalyzerReferenceChangedEventArgs(project, projectStateSets.Value.MapPerReferences, projectStateSets.Value.StateSetMap);
analyzerReferenceChangedEventArgs = GetProjectAnalyzerReferenceChangedEventArgs(project);

// update cache.
_projectAnalyzerStateMap = _projectAnalyzerStateMap.SetItem(project.Id, projectStateSets.Value);
Expand All @@ -121,37 +120,22 @@ private async Task<ProjectAnalyzerStateSets> UpdateProjectStateSetsAsync(Project
return projectStateSets.Value;
}

private ProjectAnalyzerReferenceChangedEventArgs? GetProjectAnalyzerReferenceChangedEventArgs(
Project project,
ImmutableDictionary<object, ImmutableArray<DiagnosticAnalyzer>> newMapPerReference,
ImmutableDictionary<DiagnosticAnalyzer, StateSet> newMap)
private ProjectAnalyzerReferenceChangedEventArgs? GetProjectAnalyzerReferenceChangedEventArgs(Project project)
{
// No need to use _projectAnalyzerStateMapGuard during reads of _projectAnalyzerStateMap
if (!_projectAnalyzerStateMap.TryGetValue(project.Id, out var entry))
{
// no previous references and we still don't have any references
if (newMap.Count == 0)
{
return null;
}

// new reference added
return new ProjectAnalyzerReferenceChangedEventArgs(project, newMap.Values.ToImmutableArrayOrEmpty(), []);
return null;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

converted to 'null', since hte only code that reads the 'removed' argument bails out if it is empty.

}

Debug.Assert(!entry.AnalyzerReferences.Equals(project.AnalyzerReferences));

// there has been change. find out what has changed
var addedStates = DiffStateSets(project.AnalyzerReferences.Except(entry.AnalyzerReferences), newMapPerReference, newMap);
var removedStates = DiffStateSets(entry.AnalyzerReferences.Except(project.AnalyzerReferences), entry.MapPerReferences, entry.StateSetMap);

// nothing has changed
if (addedStates.Length == 0 && removedStates.Length == 0)
{
if (removedStates.Length == 0)
return null;
}

return new ProjectAnalyzerReferenceChangedEventArgs(project, addedStates, removedStates);
return new ProjectAnalyzerReferenceChangedEventArgs(removedStates);
}

private static ImmutableArray<StateSet> DiffStateSets(
Expand Down
Loading