提交 545e7240 编写于 作者: C CyrusNajmabadi

Don't explicitly downcast types.

上级 2f9a713c
......@@ -22,7 +22,6 @@ private SuppressionFixAllProvider()
public async override Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
{
var batchFixer = (BatchFixAllProvider)WellKnownFixAllProviders.BatchFixer;
var fixMultipleContext = fixAllContext as FixMultipleContext;
var suppressionFixer = (AbstractSuppressionCodeFixProvider)((WrapperCodeFixProvider)fixAllContext.CodeFixProvider).SuppressionFixProvider;
var isGlobalSuppression = NestedSuppressionCodeAction.IsEquivalenceKeyForGlobalSuppression(fixAllContext.CodeActionEquivalenceKey);
if (!isGlobalSuppression)
......@@ -38,9 +37,14 @@ public async override Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
var title = fixAllContext.CodeActionEquivalenceKey;
if (fixAllContext.Document != null)
{
#if false
var documentsAndDiagnosticsToFixMap = fixMultipleContext != null ?
fixMultipleContext.DocumentDiagnosticsToFix :
await batchFixer.GetDocumentDiagnosticsToFixAsync(fixAllContext).ConfigureAwait(false);
#endif
var documentsAndDiagnosticsToFixMap =
await fixAllContext.GetDocumentDiagnosticsToFixAsync(batchFixer).ConfigureAwait(false);
return !isGlobalSuppression ?
await batchFixer.GetFixAsync(documentsAndDiagnosticsToFixMap, fixAllContext).ConfigureAwait(false) :
......@@ -48,9 +52,13 @@ public async override Task<CodeAction> GetFixAsync(FixAllContext fixAllContext)
}
else
{
#if false
var projectsAndDiagnosticsToFixMap = fixMultipleContext != null ?
fixMultipleContext.ProjectDiagnosticsToFix :
await batchFixer.GetProjectDiagnosticsToFixAsync(fixAllContext).ConfigureAwait(false);
#endif
var projectsAndDiagnosticsToFixMap =
await fixAllContext.GetProjectDiagnosticsToFixAsync(batchFixer).ConfigureAwait(false);
return !isGlobalSuppression ?
await batchFixer.GetFixAsync(projectsAndDiagnosticsToFixMap, fixAllContext).ConfigureAwait(false) :
......
......@@ -3,6 +3,8 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading;
using System;
using System.Collections.Immutable;
namespace Microsoft.CodeAnalysis.CodeFixes
{
......@@ -32,5 +34,15 @@ public abstract class DiagnosticProvider
/// </summary>
public abstract Task<IEnumerable<Diagnostic>> GetAllDiagnosticsAsync(Project project, CancellationToken cancellationToken);
}
internal virtual Task<ImmutableDictionary<Document, ImmutableArray<Diagnostic>>> GetDocumentDiagnosticsToFixAsync(BatchFixAllProvider batchFixer)
{
return batchFixer.GetDocumentDiagnosticsToFixAsync(this);
}
internal virtual Task<ImmutableDictionary<Project, ImmutableArray<Diagnostic>>> GetProjectDiagnosticsToFixAsync(BatchFixAllProvider batchFixer)
{
return batchFixer.GetProjectDiagnosticsToFixAsync(this);
}
}
}
......@@ -96,19 +96,6 @@ private static ImmutableHashSet<string> GetDiagnosticsIds(IEnumerable<ImmutableA
return uniqueIds.ToImmutable();
}
public ImmutableDictionary<Document, ImmutableArray<Diagnostic>> DocumentDiagnosticsToFix => _diagnosticProvider.DocumentDiagnosticsToFix;
public ImmutableDictionary<Project, ImmutableArray<Diagnostic>> ProjectDiagnosticsToFix => _diagnosticProvider.ProjectDiagnosticsToFix;
public Diagnostic GetTriggerDiagnostic()
{
if (Document != null)
{
return DocumentDiagnosticsToFix[Document].First();
}
return ProjectDiagnosticsToFix[Project].First();
}
public new FixAllContext WithCancellationToken(CancellationToken cancellationToken)
{
if (this.CancellationToken == cancellationToken)
......@@ -120,5 +107,15 @@ public new FixAllContext WithCancellationToken(CancellationToken cancellationTok
new FixMultipleContext(Document, CodeFixProvider, CodeActionEquivalenceKey, DiagnosticIds, _diagnosticProvider, cancellationToken) :
new FixMultipleContext(Project, CodeFixProvider, CodeActionEquivalenceKey, DiagnosticIds, _diagnosticProvider, cancellationToken);
}
internal override Task<ImmutableDictionary<Document, ImmutableArray<Diagnostic>>> GetDocumentDiagnosticsToFixAsync(BatchFixAllProvider batchFixer)
{
return Task.FromResult(_diagnosticProvider.DocumentDiagnosticsToFix);
}
internal override Task<ImmutableDictionary<Project, ImmutableArray<Diagnostic>>> GetProjectDiagnosticsToFixAsync(BatchFixAllProvider batchFixer)
{
return Task.FromResult(_diagnosticProvider.ProjectDiagnosticsToFix);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册