Skip to content

Commit ef4a827

Browse files
Make RewriteCSharpResponseAsync synchronously
Now the completion list rewriters are synchronous, the RazorCodeDocument can be acquired by callers of RewriteCSharpResponseAsync and passed to it. Then, RewriteCSharpResponseAsync can be made synchronous.
1 parent 3a0d65c commit ef4a827

File tree

3 files changed

+12
-21
lines changed

3 files changed

+12
-21
lines changed

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Completion/Delegation/DelegatedCompletionListProvider.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,13 @@ public DelegatedCompletionListProvider(
8181

8282
completionContext = rewrittenContext;
8383

84-
var razorCodeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false);
84+
var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false);
85+
8586
// It's a bit confusing, but we have two different "add snippets" options - one is a part of
8687
// RazorCompletionOptions and becomes a part of RazorCompletionContext and is used by
8788
// RazorCompletionFactsService, and the second one below that's used for delegated completion
8889
// Their values are not related in any way.
89-
var shouldIncludeDelegationSnippets = DelegatedCompletionHelper.ShouldIncludeSnippets(razorCodeDocument, absoluteIndex);
90+
var shouldIncludeDelegationSnippets = DelegatedCompletionHelper.ShouldIncludeSnippets(codeDocument, absoluteIndex);
9091

9192
var delegatedParams = new DelegatedCompletionParams(
9293
documentContext.GetTextDocumentIdentifierAndVersion(),
@@ -103,14 +104,7 @@ public DelegatedCompletionListProvider(
103104
cancellationToken).ConfigureAwait(false);
104105

105106
var rewrittenResponse = delegatedParams.ProjectedKind == RazorLanguageKind.CSharp
106-
? await DelegatedCompletionHelper.RewriteCSharpResponseAsync(
107-
delegatedResponse,
108-
absoluteIndex,
109-
documentContext,
110-
delegatedParams.ProjectedPosition,
111-
razorCompletionOptions,
112-
cancellationToken)
113-
.ConfigureAwait(false)
107+
? DelegatedCompletionHelper.RewriteCSharpResponse(delegatedResponse, absoluteIndex, codeDocument, delegatedParams.ProjectedPosition, razorCompletionOptions)
114108
: DelegatedCompletionHelper.RewriteHtmlResponse(delegatedResponse, razorCompletionOptions);
115109

116110
var completionCapability = clientCapabilities?.TextDocument?.Completion as VSInternalCompletionSetting;

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/Delegation/DelegatedCompletionHelper.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,12 @@ internal static class DelegatedCompletionHelper
9696
/// <returns>
9797
/// Possibly modified completion response.
9898
/// </returns>
99-
public static async ValueTask<VSInternalCompletionList> RewriteCSharpResponseAsync(
99+
public static VSInternalCompletionList RewriteCSharpResponse(
100100
VSInternalCompletionList? delegatedResponse,
101101
int absoluteIndex,
102-
DocumentContext documentContext,
102+
RazorCodeDocument codeDocument,
103103
Position projectedPosition,
104-
RazorCompletionOptions completionOptions,
105-
CancellationToken cancellationToken)
104+
RazorCompletionOptions completionOptions)
106105
{
107106
if (delegatedResponse?.Items is null)
108107
{
@@ -113,8 +112,6 @@ public static async ValueTask<VSInternalCompletionList> RewriteCSharpResponseAsy
113112
return new VSInternalCompletionList() { IsIncomplete = true, Items = [] };
114113
}
115114

116-
var codeDocument = await documentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false);
117-
118115
var rewrittenResponse = delegatedResponse;
119116

120117
foreach (var rewriter in s_delegatedCSharpCompletionResponseRewriters)

src/Razor/src/Microsoft.CodeAnalysis.Remote.Razor/Completion/RemoteCompletionService.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -212,16 +212,16 @@ private async ValueTask<Response> GetCompletionAsync(
212212
};
213213
}
214214

215+
var codeDocument = await remoteDocumentContext.GetCodeDocumentAsync(cancellationToken).ConfigureAwait(false);
216+
215217
var vsPlatformCompletionList = JsonHelpers.ToVsLSP<VSInternalCompletionList, RoslynCompletionList>(roslynCompletionList);
216218

217-
var rewrittenResponse = await DelegatedCompletionHelper.RewriteCSharpResponseAsync(
219+
var rewrittenResponse = DelegatedCompletionHelper.RewriteCSharpResponse(
218220
vsPlatformCompletionList,
219221
documentIndex,
220-
remoteDocumentContext,
222+
codeDocument,
221223
mappedPosition,
222-
razorCompletionOptions,
223-
cancellationToken)
224-
.ConfigureAwait(false);
224+
razorCompletionOptions);
225225

226226
return rewrittenResponse;
227227
}

0 commit comments

Comments
 (0)