提交 3e848819 编写于 作者: C CyrusNajmabadi

Stop making FixAllCodeActionContext derive from FixAllContext.

上级 c48a1433
......@@ -288,7 +288,7 @@ public async Task<IEnumerable<CodeFixCollection>> GetFixesAsync(Document documen
var fixAllProviderInfo = extensionManager.PerformFunction(fixer, () => ImmutableInterlocked.GetOrAdd(ref _fixAllProviderMap, fixer, FixAllProviderInfo.Create), defaultValue: null);
FixAllProvider fixAllProvider = null;
FixAllCodeActionContext fixAllContext = null;
FixAllContext fixAllContext = null;
IEnumerable<FixAllScope> supportedScopes = null;
if (fixAllProviderInfo != null)
{
......
......@@ -47,7 +47,7 @@ internal class CodeFixSuggestedAction : SuggestedActionWithFlavors, ITelemetryDi
CodeAction action,
int actionCount,
FixAllProvider fixAllProvider,
FixAllCodeActionContext fixAllCodeActionContext,
FixAllContext fixAllCodeActionContext,
IEnumerable<FixAllScope> supportedScopes,
Diagnostic firstDiagnostic,
Workspace workspace,
......@@ -84,7 +84,7 @@ internal class CodeFixSuggestedAction : SuggestedActionWithFlavors, ITelemetryDi
/// Transforms this context into the public <see cref="FixAllContext"/> to be used for <see cref="FixAllProvider.GetFixAsync(FixAllContext)"/> invocation.
/// </summary>
private static FixAllContext GetContextForScopeAndActionId(
FixAllCodeActionContext context,
FixAllContext context,
FixAllScope scope, string codeActionEquivalenceKey)
{
if (context.Scope == scope && context.CodeActionEquivalenceKey == codeActionEquivalenceKey)
......
......@@ -21,7 +21,7 @@ internal class CodeFixCollection
/// Optional fix all context, which is non-null if the given <see cref="Provider"/> supports fix all occurrences code fix.
/// </summary>
public FixAllProvider FixAllProvider { get; }
public FixAllCodeActionContext FixAllContext { get; }
public FixAllContext FixAllContext { get; }
public IEnumerable<FixAllScope> SupportedScopes { get; }
public Diagnostic FirstDiagnostic { get; }
......@@ -30,7 +30,7 @@ internal class CodeFixCollection
TextSpan span,
IEnumerable<CodeFix> fixes,
FixAllProvider fixAllProvider,
FixAllCodeActionContext fixAllContext,
FixAllContext fixAllContext,
IEnumerable<FixAllScope> supportedScopes,
Diagnostic firstDiagnostic) :
this(provider, span, fixes.ToImmutableArray(), fixAllProvider, fixAllContext, supportedScopes, firstDiagnostic)
......@@ -42,7 +42,7 @@ internal class CodeFixCollection
TextSpan span,
ImmutableArray<CodeFix> fixes,
FixAllProvider fixAllProvider,
FixAllCodeActionContext fixAllContext,
FixAllContext fixAllContext,
IEnumerable<FixAllScope> supportedScopes,
Diagnostic firstDiagnostic)
{
......
......@@ -13,9 +13,10 @@ namespace Microsoft.CodeAnalysis.CodeFixes
/// <summary>
/// FixAll context with some additional information specifically for <see cref="FixAllCodeAction"/>.
/// </summary>
internal partial class FixAllCodeActionContext : FixAllContext
internal partial class FixAllCodeActionContext
{
internal class FixAllDiagnosticProvider : DiagnosticProvider
// Internal for testing purposes.
internal class FixAllDiagnosticProvider : FixAllContext.DiagnosticProvider
{
private readonly ImmutableHashSet<string> _diagnosticIds;
......
......@@ -13,12 +13,9 @@ namespace Microsoft.CodeAnalysis.CodeFixes
/// <summary>
/// FixAll context with some additional information specifically for <see cref="FixAllCodeAction"/>.
/// </summary>
internal partial class FixAllCodeActionContext : FixAllContext
internal static partial class FixAllCodeActionContext
{
private readonly FixAllProviderInfo _fixAllProviderInfo;
private readonly IEnumerable<Diagnostic> _originalFixDiagnostics;
internal static FixAllCodeActionContext Create(
internal static FixAllContext Create(
Document document,
FixAllProviderInfo fixAllProviderInfo,
CodeFixProvider originalFixProvider,
......@@ -29,10 +26,17 @@ internal partial class FixAllCodeActionContext : FixAllContext
{
var diagnosticIds = GetFixAllDiagnosticIds(fixAllProviderInfo, originalFixDiagnostics).ToImmutableHashSet();
var diagnosticProvider = new FixAllDiagnosticProvider(diagnosticIds, getDocumentDiagnosticsAsync, getProjectDiagnosticsAsync);
return new FixAllCodeActionContext(document, fixAllProviderInfo, originalFixProvider, originalFixDiagnostics, diagnosticIds, diagnosticProvider, cancellationToken);
return new FixAllContext(
document: document,
codeFixProvider: originalFixProvider,
scope: FixAllScope.Document,
codeActionEquivalenceKey: null,
diagnosticIds: diagnosticIds,
fixAllDiagnosticProvider: diagnosticProvider,
cancellationToken: cancellationToken);
}
internal static FixAllCodeActionContext Create(
internal static FixAllContext Create(
Project project,
FixAllProviderInfo fixAllProviderInfo,
CodeFixProvider originalFixProvider,
......@@ -43,35 +47,13 @@ internal partial class FixAllCodeActionContext : FixAllContext
{
var diagnosticIds = GetFixAllDiagnosticIds(fixAllProviderInfo, originalFixDiagnostics).ToImmutableHashSet();
var diagnosticProvider = new FixAllDiagnosticProvider(diagnosticIds, getDocumentDiagnosticsAsync, getProjectDiagnosticsAsync);
return new FixAllCodeActionContext(project, fixAllProviderInfo, originalFixProvider, originalFixDiagnostics, diagnosticIds, diagnosticProvider, cancellationToken);
}
private FixAllCodeActionContext(
Document document,
FixAllProviderInfo fixAllProviderInfo,
CodeFixProvider originalFixProvider,
IEnumerable<Diagnostic> originalFixDiagnostics,
ImmutableHashSet<string> diagnosticIds,
FixAllDiagnosticProvider diagnosticProvider,
CancellationToken cancellationToken)
: base(document, originalFixProvider, FixAllScope.Document, null, diagnosticIds, diagnosticProvider, cancellationToken)
{
_fixAllProviderInfo = fixAllProviderInfo;
_originalFixDiagnostics = originalFixDiagnostics;
}
private FixAllCodeActionContext(
Project project,
FixAllProviderInfo fixAllProviderInfo,
CodeFixProvider originalFixProvider,
IEnumerable<Diagnostic> originalFixDiagnostics,
ImmutableHashSet<string> diagnosticIds,
FixAllDiagnosticProvider diagnosticProvider,
CancellationToken cancellationToken)
: base(project, originalFixProvider, FixAllScope.Project, null, diagnosticIds, diagnosticProvider, cancellationToken)
{
_fixAllProviderInfo = fixAllProviderInfo;
_originalFixDiagnostics = originalFixDiagnostics;
return new FixAllContext(
project: project,
codeFixProvider: originalFixProvider,
scope: FixAllScope.Project,
codeActionEquivalenceKey: null, diagnosticIds: diagnosticIds,
fixAllDiagnosticProvider: diagnosticProvider,
cancellationToken: cancellationToken);
}
private static IEnumerable<string> GetFixAllDiagnosticIds(FixAllProviderInfo fixAllProviderInfo, IEnumerable<Diagnostic> originalFixDiagnostics)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册