Skip to content

Commit e34b4fc

Browse files
Return ImmutableArrays rather than mutable array copies
Rather than returning mutable array copies from AllTriggerCharacters and AllCommitCharacters, return an ImmutableArray and let the call sites make the copies as needed.
1 parent 5f0b5a3 commit e34b4fc

File tree

3 files changed

+8
-12
lines changed

3 files changed

+8
-12
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ public void ApplyCapabilities(VSInternalServerCapabilities serverCapabilities, V
4040
serverCapabilities.CompletionProvider = new CompletionOptions()
4141
{
4242
ResolveProvider = true,
43-
TriggerCharacters = _triggerAndCommitCharacters.AllTriggerCharacters,
44-
AllCommitCharacters = _triggerAndCommitCharacters.AllCommitCharacters
43+
TriggerCharacters = [.. _triggerAndCommitCharacters.AllTriggerCharacters],
44+
AllCommitCharacters = [.. _triggerAndCommitCharacters.AllCommitCharacters]
4545
};
4646
}
4747

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,16 @@ internal class CompletionTriggerAndCommitCharacters
2525
private readonly HashSet<char> _delegationTriggerCharacters;
2626
private readonly HashSet<char> _htmlTriggerCharacters;
2727
private readonly HashSet<char> _razorTriggerCharacters;
28-
private readonly ImmutableArray<string> _allTriggerCharacters;
29-
private readonly ImmutableArray<string> _allCommitCharacters;
3028

31-
// Note: Create a new array each time to avoid modifying the original array.
32-
public string[] AllTriggerCharacters => [.. _allTriggerCharacters];
29+
public ImmutableArray<string> AllTriggerCharacters { get; }
3330

3431
/// <summary>
3532
/// This is the intersection of C# and HTML commit characters.
3633
/// </summary>
3734
// We need to specify it so that platform can correctly calculate ApplicableToSpan in
3835
// https://devdiv.visualstudio.com/DevDiv/_git/VSLanguageServerClient?path=/src/product/RemoteLanguage/Impl/Features/Completion/AsyncCompletionSource.cs&version=GBdevelop&line=855&lineEnd=855&lineStartColumn=9&lineEndColumn=49&lineStyle=plain&_a=contents
3936
// This is needed to fix https://github.com/dotnet/razor/issues/10787 in particular
40-
// Note: Create a new array each time to avoid modifying the original array.
41-
public string[] AllCommitCharacters => [.. _allCommitCharacters];
37+
public ImmutableArray<string> AllCommitCharacters { get; }
4238

4339
public CompletionTriggerAndCommitCharacters(LanguageServerFeatureOptions languageServerFeatureOptions)
4440
{
@@ -79,8 +75,8 @@ public CompletionTriggerAndCommitCharacters(LanguageServerFeatureOptions languag
7975
_htmlTriggerCharacters = htmlTriggerCharacters;
8076
_razorTriggerCharacters = razorTriggerCharacters;
8177
_delegationTriggerCharacters = delegationTriggerCharacters;
82-
_allTriggerCharacters = allTriggerCharacters.SelectAsArray(static c => c.ToString());
83-
_allCommitCharacters = commitCharacters.SelectAsArray(static c => c.ToString());
78+
AllTriggerCharacters = allTriggerCharacters.SelectAsArray(static c => c.ToString());
79+
AllCommitCharacters = commitCharacters.SelectAsArray(static c => c.ToString());
8480
}
8581

8682
public bool IsValidCSharpTrigger(CompletionContext completionContext)

src/Razor/src/Microsoft.VisualStudio.LanguageServices.Razor/LanguageClient/Cohost/CohostDocumentCompletionEndpoint.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ public ImmutableArray<Registration> GetRegistrations(VSInternalClientCapabilitie
6868
RegisterOptions = new CompletionRegistrationOptions()
6969
{
7070
ResolveProvider = false, // TODO - change to true when Resolve is implemented
71-
TriggerCharacters = _triggerAndCommitCharacters.AllTriggerCharacters,
72-
AllCommitCharacters = _triggerAndCommitCharacters.AllCommitCharacters
71+
TriggerCharacters = [.. _triggerAndCommitCharacters.AllTriggerCharacters],
72+
AllCommitCharacters = [.. _triggerAndCommitCharacters.AllCommitCharacters]
7373
}
7474
}];
7575
}

0 commit comments

Comments
 (0)