Skip to content

Commit ebd82b3

Browse files
committed
Fix client capabilities in completion resolve endpoint
1 parent 1106ce5 commit ebd82b3

File tree

6 files changed

+25
-33
lines changed

6 files changed

+25
-33
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ internal class DelegatedCompletionItemResolver(
3434
VSInternalCompletionItem item,
3535
VSInternalCompletionList containingCompletionList,
3636
ICompletionResolveContext originalRequestContext,
37-
VSInternalClientCapabilities? clientCapabilities,
37+
VSInternalClientCapabilities clientCapabilities,
3838
IComponentAvailabilityService componentAvailabilityService,
3939
CancellationToken cancellationToken)
4040
{

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Completion/RazorCompletionResolveEndpoint.cs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using Microsoft.AspNetCore.Razor.LanguageServer.EndpointContracts;
77
using Microsoft.CodeAnalysis.Razor.Completion;
8+
using Microsoft.CodeAnalysis.Razor.Protocol;
89
using Microsoft.CodeAnalysis.Razor.Tooltip;
910

1011
namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion;
@@ -13,22 +14,17 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.Completion;
1314
internal class RazorCompletionResolveEndpoint(
1415
AggregateCompletionItemResolver completionItemResolver,
1516
CompletionListCache completionListCache,
16-
IComponentAvailabilityService componentAvailabilityService)
17-
: IRazorRequestHandler<VSInternalCompletionItem, VSInternalCompletionItem>, ICapabilitiesProvider
17+
IComponentAvailabilityService componentAvailabilityService,
18+
IClientCapabilitiesService clientCapabilitiesService)
19+
: IRazorRequestHandler<VSInternalCompletionItem, VSInternalCompletionItem>
1820
{
1921
private readonly AggregateCompletionItemResolver _completionItemResolver = completionItemResolver;
2022
private readonly CompletionListCache _completionListCache = completionListCache;
2123
private readonly IComponentAvailabilityService _componentAvailabilityService = componentAvailabilityService;
22-
23-
private VSInternalClientCapabilities? _clientCapabilities;
24+
private readonly IClientCapabilitiesService _clientCapabilitiesService = clientCapabilitiesService;
2425

2526
public bool MutatesSolutionState => false;
2627

27-
public void ApplyCapabilities(VSInternalServerCapabilities serverCapabilities, VSInternalClientCapabilities clientCapabilities)
28-
{
29-
_clientCapabilities = clientCapabilities;
30-
}
31-
3228
public TextDocumentIdentifier GetTextDocumentIdentifier(VSInternalCompletionItem request)
3329
{
3430
var context = RazorCompletionResolveData.Unwrap(request);
@@ -50,7 +46,7 @@ public async Task<VSInternalCompletionItem> HandleRequestAsync(VSInternalComplet
5046
completionItem,
5147
containingCompletionList,
5248
originalRequestContext,
53-
_clientCapabilities,
49+
_clientCapabilitiesService.ClientCapabilities,
5450
_componentAvailabilityService,
5551
cancellationToken)
5652
.ConfigureAwait(false);

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Extensions/IServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public static void AddCompletionServices(this IServiceCollection services)
7474
{
7575
services.AddHandlerWithCapabilities<InlineCompletionEndpoint>();
7676
services.AddHandlerWithCapabilities<RazorCompletionEndpoint>();
77-
services.AddHandlerWithCapabilities<RazorCompletionResolveEndpoint>();
77+
services.AddHandler<RazorCompletionResolveEndpoint>();
7878
services.AddSingleton<CompletionListCache>();
7979
services.AddSingleton<CompletionListProvider>();
8080
services.AddSingleton<DelegatedCompletionListProvider>();

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/AggregateCompletionItemResolver.cs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System;
5-
using System.Buffers;
65
using System.Collections.Generic;
7-
using System.Linq;
6+
using System.Collections.Immutable;
87
using System.Threading;
98
using System.Threading.Tasks;
109
using Microsoft.AspNetCore.Razor.PooledObjects;
@@ -13,26 +12,20 @@
1312

1413
namespace Microsoft.CodeAnalysis.Razor.Completion;
1514

16-
internal class AggregateCompletionItemResolver
15+
internal class AggregateCompletionItemResolver(IEnumerable<CompletionItemResolver> completionItemResolvers, ILoggerFactory loggerFactory)
1716
{
18-
private readonly IReadOnlyList<CompletionItemResolver> _completionItemResolvers;
19-
private readonly ILogger _logger;
20-
21-
public AggregateCompletionItemResolver(IEnumerable<CompletionItemResolver> completionItemResolvers, ILoggerFactory loggerFactory)
22-
{
23-
_completionItemResolvers = completionItemResolvers.ToArray();
24-
_logger = loggerFactory.GetOrCreateLogger<AggregateCompletionItemResolver>();
25-
}
17+
private readonly ImmutableArray<CompletionItemResolver> _completionItemResolvers = [.. completionItemResolvers];
18+
private readonly ILogger _logger = loggerFactory.GetOrCreateLogger<AggregateCompletionItemResolver>();
2619

2720
public async Task<VSInternalCompletionItem?> ResolveAsync(
2821
VSInternalCompletionItem item,
2922
VSInternalCompletionList containingCompletionList,
3023
ICompletionResolveContext originalRequestContext,
31-
VSInternalClientCapabilities? clientCapabilities,
24+
VSInternalClientCapabilities clientCapabilities,
3225
IComponentAvailabilityService componentAvailabilityService,
3326
CancellationToken cancellationToken)
3427
{
35-
using var completionItemResolverTasks = new PooledArrayBuilder<Task<VSInternalCompletionItem?>>(_completionItemResolvers.Count);
28+
using var completionItemResolverTasks = new PooledArrayBuilder<Task<VSInternalCompletionItem?>>(_completionItemResolvers.Length);
3629

3730
foreach (var completionItemResolver in _completionItemResolvers)
3831
{

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Completion/CompletionItemResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ internal abstract class CompletionItemResolver
1313
VSInternalCompletionItem item,
1414
VSInternalCompletionList containingCompletionList,
1515
ICompletionResolveContext originalRequestContext,
16-
VSInternalClientCapabilities? clientCapabilities,
16+
VSInternalClientCapabilities clientCapabilities,
1717
IComponentAvailabilityService componentAvailabilityService,
1818
CancellationToken cancellationToken);
1919
}

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/RazorCompletionResolveEndpointTest.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Threading;
88
using System.Threading.Tasks;
99
using Microsoft.AspNetCore.Razor.LanguageServer.Hover;
10+
using Microsoft.AspNetCore.Razor.LanguageServer.Test;
1011
using Microsoft.AspNetCore.Razor.Test.Common;
1112
using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer;
1213
using Microsoft.CodeAnalysis.Razor.Completion;
@@ -30,12 +31,6 @@ public RazorCompletionResolveEndpointTest(ITestOutputHelper testOutput)
3031
var projectManager = CreateProjectSnapshotManager();
3132
var componentAvailabilityService = new ComponentAvailabilityService(projectManager);
3233

33-
_endpoint = new RazorCompletionResolveEndpoint(
34-
new AggregateCompletionItemResolver(
35-
[new TestCompletionItemResolver()],
36-
LoggerFactory),
37-
_completionListCache,
38-
componentAvailabilityService);
3934
_clientCapabilities = new VSInternalClientCapabilities()
4035
{
4136
TextDocument = new TextDocumentClientCapabilities()
@@ -49,7 +44,15 @@ [new TestCompletionItemResolver()],
4944
}
5045
}
5146
};
52-
_endpoint.ApplyCapabilities(new(), _clientCapabilities);
47+
var clientCapabilitiesService = new TestClientCapabilitiesService(_clientCapabilities);
48+
49+
_endpoint = new RazorCompletionResolveEndpoint(
50+
new AggregateCompletionItemResolver(
51+
[new TestCompletionItemResolver()],
52+
LoggerFactory),
53+
_completionListCache,
54+
componentAvailabilityService,
55+
clientCapabilitiesService);
5356
}
5457

5558
[Fact]

0 commit comments

Comments
 (0)