Skip to content

Commit 803a7dd

Browse files
committed
Strongly type the completion resolve context object
1 parent 8869cbe commit 803a7dd

File tree

13 files changed

+36
-30
lines changed

13 files changed

+36
-30
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
@@ -31,7 +31,7 @@ internal class DelegatedCompletionItemResolver(
3131
public override async Task<VSInternalCompletionItem?> ResolveAsync(
3232
VSInternalCompletionItem item,
3333
VSInternalCompletionList containingCompletionList,
34-
object? originalRequestContext,
34+
ICompletionResolveContext originalRequestContext,
3535
VSInternalClientCapabilities? clientCapabilities,
3636
IComponentAvailabilityService componentAvailabilityService,
3737
CancellationToken cancellationToken)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public async Task<VSInternalCompletionItem> HandleRequestAsync(VSInternalComplet
3939
return completionItem;
4040
}
4141

42-
object? originalRequestContext = null;
42+
ICompletionResolveContext? originalRequestContext = null;
4343
VSInternalCompletionList? containingCompletionList = null;
4444
foreach (var resultId in resultIds)
4545
{
@@ -61,7 +61,7 @@ public async Task<VSInternalCompletionItem> HandleRequestAsync(VSInternalComplet
6161
}
6262
}
6363

64-
if (containingCompletionList is null)
64+
if (containingCompletionList is null || originalRequestContext is null)
6565
{
6666
// Couldn't find an associated completion list
6767
return completionItem;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public AggregateCompletionItemResolver(IEnumerable<CompletionItemResolver> compl
2828
public async Task<VSInternalCompletionItem?> ResolveAsync(
2929
VSInternalCompletionItem item,
3030
VSInternalCompletionList containingCompletionList,
31-
object? originalRequestContext,
31+
ICompletionResolveContext originalRequestContext,
3232
VSInternalClientCapabilities? clientCapabilities,
3333
IComponentAvailabilityService componentAvailabilityService,
3434
CancellationToken cancellationToken)

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
public abstract Task<VSInternalCompletionItem?> ResolveAsync(
1414
VSInternalCompletionItem item,
1515
VSInternalCompletionList containingCompletionList,
16-
object? originalRequestContext,
16+
ICompletionResolveContext originalRequestContext,
1717
VSInternalClientCapabilities? clientCapabilities,
1818
IComponentAvailabilityService componentAvailabilityService,
1919
CancellationToken cancellationToken);

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace Microsoft.CodeAnalysis.Razor.Completion;
88

99
internal class CompletionListCache
1010
{
11-
private record struct Slot(int Id, VSInternalCompletionList CompletionList, object? Context);
11+
private record struct Slot(int Id, VSInternalCompletionList CompletionList, ICompletionResolveContext Context);
1212

1313
// Internal for testing
1414
internal const int MaxCacheSize = 10;
@@ -21,7 +21,7 @@ private record struct Slot(int Id, VSInternalCompletionList CompletionList, obje
2121
private int _nextIndex;
2222
private int _nextId;
2323

24-
public int Add(VSInternalCompletionList completionList, object? context)
24+
public int Add(VSInternalCompletionList completionList, ICompletionResolveContext context)
2525
{
2626
if (completionList is null)
2727
{
@@ -48,7 +48,7 @@ public int Add(VSInternalCompletionList completionList, object? context)
4848
}
4949
}
5050

51-
public bool TryGet(int id, out (VSInternalCompletionList CompletionList, object? Context) result)
51+
public bool TryGet(int id, out (VSInternalCompletionList CompletionList, ICompletionResolveContext Context) result)
5252
{
5353
lock (_accessLock)
5454
{
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright (c) .NET Foundation. All rights reserved.
2+
// Licensed under the MIT license. See License.txt in the project root for license information.
3+
4+
namespace Microsoft.CodeAnalysis.Razor.Completion;
5+
6+
/// <summary>
7+
/// Marker interface to make the CompletionListCache API easier to use
8+
/// </summary>
9+
internal interface ICompletionResolveContext
10+
{
11+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ internal class RazorCompletionItemResolver : CompletionItemResolver
1717
public override async Task<VSInternalCompletionItem?> ResolveAsync(
1818
VSInternalCompletionItem completionItem,
1919
VSInternalCompletionList containingCompletionList,
20-
object? originalRequestContext,
20+
ICompletionResolveContext originalRequestContext,
2121
VSInternalClientCapabilities? clientCapabilities,
2222
IComponentAvailabilityService componentAvailabilityService,
2323
CancellationToken cancellationToken)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55

66
namespace Microsoft.CodeAnalysis.Razor.Completion;
77

8-
internal record RazorCompletionResolveContext(string FilePath, ImmutableArray<RazorCompletionItem> CompletionItems);
8+
internal record RazorCompletionResolveContext(string FilePath, ImmutableArray<RazorCompletionItem> CompletionItems) : ICompletionResolveContext;

src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Protocol/DelegatedTypes.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
namespace Microsoft.CodeAnalysis.Razor.Protocol;
1212

13+
using Microsoft.CodeAnalysis.Razor.Completion;
1314
using Microsoft.VisualStudio.LanguageServer.Protocol;
1415

1516
internal record DelegatedSpellCheckParams(
@@ -70,7 +71,7 @@ internal record DelegatedMapCodeParams(
7071

7172
internal record DelegatedCompletionResolutionContext(
7273
[property: JsonPropertyName("originalRequestParams")] DelegatedCompletionParams OriginalRequestParams,
73-
[property: JsonPropertyName("originalCompletionListData")] object? OriginalCompletionListData);
74+
[property: JsonPropertyName("originalCompletionListData")] object? OriginalCompletionListData) : ICompletionResolveContext;
7475

7576
internal record DelegatedCompletionItemResolveParams(
7677
[property: JsonPropertyName("identifier")] TextDocumentIdentifierAndVersion Identifier,

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/Completion/Delegation/DelegatedCompletionItemResolverTest.NetFx.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.AspNetCore.Razor.LanguageServer.Formatting;
1313
using Microsoft.AspNetCore.Razor.LanguageServer.Hover;
1414
using Microsoft.AspNetCore.Razor.LanguageServer.Test;
15+
using Microsoft.AspNetCore.Razor.Test.Common;
1516
using Microsoft.AspNetCore.Razor.Test.Common.LanguageServer;
1617
using Microsoft.CodeAnalysis.Razor.Completion;
1718
using Microsoft.CodeAnalysis.Razor.Formatting;
@@ -94,7 +95,7 @@ public async Task ResolveAsync_CanNotFindCompletionItem_Noops()
9495
var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server);
9596
var item = new VSInternalCompletionItem();
9697
var notContainingCompletionList = new VSInternalCompletionList();
97-
var originalRequestContext = new object();
98+
var originalRequestContext = StrictMock.Of<ICompletionResolveContext>();
9899

99100
// Act
100101
var resolvedItem = await resolver.ResolveAsync(
@@ -113,7 +114,7 @@ public async Task ResolveAsync_UnknownRequestContext_Noops()
113114
var resolver = new DelegatedCompletionItemResolver(_documentContextFactory, _formattingService.GetValue(), optionsMonitor, server);
114115
var item = new VSInternalCompletionItem();
115116
var containingCompletionList = new VSInternalCompletionList() { Items = new[] { item, } };
116-
var originalRequestContext = new object();
117+
var originalRequestContext = StrictMock.Of<ICompletionResolveContext>();
117118

118119
// Act
119120
var resolvedItem = await resolver.ResolveAsync(

0 commit comments

Comments
 (0)