diff --git a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingDiagnosticAnalyzer.cs b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingDiagnosticAnalyzer.cs index 0beda3330a0562a9480ddd2aeca1d972adb9afd3..5f744e75f394552fcbc5a5cedebda168b165e871 100644 --- a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingDiagnosticAnalyzer.cs +++ b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingDiagnosticAnalyzer.cs @@ -37,9 +37,8 @@ public override void Initialize(AnalysisContext context) private void AnalyzeSyntaxTree(SyntaxTreeAnalysisContext context) { - var diagnostics = RenameTrackingTaggerProvider.GetDiagnosticsAsync(context.Tree, DiagnosticDescriptor, context.CancellationToken).WaitAndGetResult_CanCallOnBackground(context.CancellationToken); - - foreach (var diagnostic in diagnostics) + var diagnostic = RenameTrackingTaggerProvider.TryGetDiagnostic(context.Tree, DiagnosticDescriptor, context.CancellationToken); + if (diagnostic is object) { context.ReportDiagnostic(diagnostic); } diff --git a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.StateMachine.cs b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.StateMachine.cs index 103f5e5c545a53da254d9802b70b07f330b05c7a..9c39cafb5811b65b8b8f8222342363fd73f2eb79 100644 --- a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.StateMachine.cs +++ b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.StateMachine.cs @@ -276,7 +276,7 @@ public bool CanInvokeRename(out TrackingSession trackingSession, bool isSmartTag trackingSession.CanInvokeRename(syntaxFactsService, languageHeuristicsService, isSmartTagCheck, waitForResult, cancellationToken); } - internal async Task> GetDiagnostic(SyntaxTree tree, DiagnosticDescriptor diagnosticDescriptor, CancellationToken cancellationToken) + internal Diagnostic TryGetDiagnostic(SyntaxTree tree, DiagnosticDescriptor diagnosticDescriptor, CancellationToken cancellationToken) { try { @@ -287,9 +287,9 @@ internal async Task> GetDiagnostic(SyntaxTree tree, Diag // method. If it does, we may give an incorrect response, but the diagnostics // engine will know that the document changed and not display the lightbulb anyway. - if (Buffer.AsTextContainer().CurrentText != await tree.GetTextAsync(cancellationToken).ConfigureAwait(false)) + if (Buffer.AsTextContainer().CurrentText != tree.GetText(cancellationToken)) { - return SpecializedCollections.EmptyEnumerable(); + return null; } if (CanInvokeRename(out var trackingSession, waitForResult: true, cancellationToken: cancellationToken)) @@ -306,10 +306,10 @@ internal async Task> GetDiagnostic(SyntaxTree tree, Diag tree.GetLocation(textSpan), properties); - return SpecializedCollections.SingletonEnumerable(diagnostic); + return diagnostic; } - return SpecializedCollections.EmptyEnumerable(); + return null; } catch (Exception e) when (FatalError.ReportUnlessCanceled(e)) { diff --git a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.cs b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.cs index 011de3dd498a52bcd0ca22669338ddaa0cd86c1e..78391005f4b635598264871057b34e0e67264ec2 100644 --- a/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.cs +++ b/src/EditorFeatures/Core/Implementation/RenameTracking/RenameTrackingTaggerProvider.cs @@ -110,7 +110,7 @@ internal static bool ResetRenameTrackingStateWorker(Workspace workspace, Documen return false; } - internal static async Task> GetDiagnosticsAsync(SyntaxTree tree, DiagnosticDescriptor diagnosticDescriptor, CancellationToken cancellationToken) + internal static Diagnostic TryGetDiagnostic(SyntaxTree tree, DiagnosticDescriptor diagnosticDescriptor, CancellationToken cancellationToken) { try { @@ -121,11 +121,11 @@ internal static async Task> GetDiagnosticsAsync(SyntaxTr var textBuffer = text.Container.TryGetTextBuffer(); if (textBuffer != null && textBuffer.Properties.TryGetProperty(typeof(StateMachine), out StateMachine stateMachine)) { - return await stateMachine.GetDiagnostic(tree, diagnosticDescriptor, cancellationToken).ConfigureAwait(false); + return stateMachine.TryGetDiagnostic(tree, diagnosticDescriptor, cancellationToken); } } - return SpecializedCollections.EmptyEnumerable(); + return null; } catch (Exception e) when (FatalError.ReportUnlessCanceled(e)) {