diff --git a/src/LanguageServer/Protocol/Extensions/Extensions.cs b/src/LanguageServer/Protocol/Extensions/Extensions.cs index 5ae3327c02fc3..a36c90e386018 100644 --- a/src/LanguageServer/Protocol/Extensions/Extensions.cs +++ b/src/LanguageServer/Protocol/Extensions/Extensions.cs @@ -10,6 +10,7 @@ using System.Threading; using System.Threading.Tasks; using Microsoft.CodeAnalysis.FindUsages; +using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.QuickInfo.Presentation; using Microsoft.CodeAnalysis.Shared.Collections; using Microsoft.CodeAnalysis.Shared.Extensions; @@ -72,11 +73,18 @@ public static ImmutableArray GetTextDocuments(this Solution soluti { var documentIds = GetDocumentIds(solution, documentUri); - var documents = documentIds - .Select(solution.GetTextDocument) - .WhereNotNull() - .ToImmutableArray(); - return documents; + if (documentIds.IsEmpty) + return []; + + using var _ = ArrayBuilder.GetInstance(out var documentsBuilder); + + foreach (var documentId in documentIds) + { + if (solution.GetTextDocument(documentId) is { } document) + documentsBuilder.Add(document); + } + + return documentsBuilder.ToImmutableAndClear(); } public static ImmutableArray GetDocumentIds(this Solution solution, DocumentUri documentUri)