Skip to content

Commit 313b8c6

Browse files
Improve signature of TryResolveAllProjects
1 parent 0b4c78b commit 313b8c6

File tree

4 files changed

+17
-26
lines changed

4 files changed

+17
-26
lines changed

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/ISnapshotResolverExtensions.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,31 @@ namespace Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem;
1212

1313
internal static class ISnapshotResolverExtensions
1414
{
15-
public static ImmutableArray<IProjectSnapshot> TryResolveAllProjects(
15+
public static bool TryResolveAllProjects(
1616
this ISnapshotResolver snapshotResolver,
17-
string documentFilePath)
17+
string documentFilePath,
18+
out ImmutableArray<IProjectSnapshot> projects)
1819
{
1920
var potentialProjects = snapshotResolver.FindPotentialProjects(documentFilePath);
2021

21-
using var projects = new PooledArrayBuilder<IProjectSnapshot>(capacity: potentialProjects.Length);
22+
using var builder = new PooledArrayBuilder<IProjectSnapshot>(capacity: potentialProjects.Length);
2223

2324
foreach (var project in potentialProjects)
2425
{
2526
if (project.GetDocument(documentFilePath) is not null)
2627
{
27-
projects.Add(project);
28+
builder.Add(project);
2829
}
2930
}
3031

3132
var normalizedDocumentPath = FilePathNormalizer.Normalize(documentFilePath);
3233
var miscProject = snapshotResolver.GetMiscellaneousProject();
3334
if (miscProject.GetDocument(normalizedDocumentPath) is not null)
3435
{
35-
projects.Add(miscProject);
36+
builder.Add(miscProject);
3637
}
3738

38-
return projects.DrainToImmutable();
39+
projects = builder.DrainToImmutable();
40+
return projects.Length > 0;
3941
}
4042
}

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/ProjectSystem/RazorProjectService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,7 @@ public Task UpdateDocumentAsync(string filePath, SourceText sourceText, int vers
227227
private void ActOnDocumentInMultipleProjects(string filePath, Action<IProjectSnapshot, string> action)
228228
{
229229
var textDocumentPath = FilePathNormalizer.Normalize(filePath);
230-
var projects = _snapshotResolver.TryResolveAllProjects(textDocumentPath);
231-
if (projects.IsEmpty)
230+
if (!_snapshotResolver.TryResolveAllProjects(textDocumentPath, out var projects))
232231
{
233232
var miscFilesProject = _snapshotResolver.GetMiscellaneousProject();
234233
projects = [miscFilesProject];

src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/Tooltip/TagHelperTooltipFactoryBase.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ protected TagHelperTooltipFactoryBase(ISnapshotResolver snapshotResolver)
3131

3232
internal async Task<string?> GetProjectAvailabilityAsync(string documentFilePath, string tagHelperTypeName, CancellationToken cancellationToken)
3333
{
34-
var projectSnapshots = _snapshotResolver.TryResolveAllProjects(documentFilePath);
35-
if (projectSnapshots.IsEmpty)
34+
if (!_snapshotResolver.TryResolveAllProjects(documentFilePath, out var projectSnapshots))
3635
{
3736
return null;
3837
}

src/Razor/test/Microsoft.AspNetCore.Razor.LanguageServer.Test/SnapshotResolverTest.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,7 @@ public async Task TryResolveAllProjects_NoProjects_ReturnsFalse()
8585
await snapshotResolver.InitializeAsync(StrictMock.Of<ILspServices>(), DisposalToken);
8686

8787
// Act
88-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
89-
90-
// Assert
91-
Assert.Empty(projects);
88+
Assert.False(snapshotResolver.TryResolveAllProjects(documentFilePath, out _));
9289
}
9390

9491
[Fact]
@@ -101,10 +98,7 @@ public async Task TryResolveAllProjects_OnlyMiscellaneousProjectDoesNotContainDo
10198
await snapshotResolver.InitializeAsync(StrictMock.Of<ILspServices>(), DisposalToken);
10299

103100
// Act
104-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
105-
106-
// Assert
107-
Assert.Empty(projects);
101+
Assert.False(snapshotResolver.TryResolveAllProjects(documentFilePath, out _));
108102
}
109103

110104
[Fact]
@@ -116,7 +110,7 @@ public async Task TryResolveAllProjects_OnlyMiscellaneousProjectContainsDocument
116110
await snapshotResolver.InitializeAsync(StrictMock.Of<ILspServices>(), DisposalToken);
117111

118112
// Act
119-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
113+
Assert.True(snapshotResolver.TryResolveAllProjects(documentFilePath, out var projects));
120114

121115
// Assert
122116
var miscFilesProject = snapshotResolver.GetMiscellaneousProject();
@@ -138,10 +132,7 @@ await projectManager.UpdateAsync(updater =>
138132
});
139133

140134
// Act
141-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
142-
143-
// Assert
144-
Assert.Empty(projects);
135+
Assert.False(snapshotResolver.TryResolveAllProjects(documentFilePath, out _));
145136
}
146137

147138
[Fact]
@@ -164,7 +155,7 @@ public async Task TryResolveAllProjects_OwnerProjectWithOthers_ReturnsTrue()
164155
});
165156

166157
// Act
167-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
158+
Assert.True(snapshotResolver.TryResolveAllProjects(documentFilePath, out var projects));
168159

169160
// Assert
170161
var project = Assert.Single(projects);
@@ -192,7 +183,7 @@ public async Task TryResolveAllProjects_MiscellaneousOwnerProjectWithOthers_Retu
192183
});
193184

194185
// Act
195-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
186+
Assert.True(snapshotResolver.TryResolveAllProjects(documentFilePath, out var projects));
196187

197188
// Assert
198189
var project = Assert.Single(projects);
@@ -217,7 +208,7 @@ public async Task TryResolveAllProjects_OwnerProjectDifferentCasing_ReturnsTrue(
217208
});
218209

219210
// Act
220-
var projects = snapshotResolver.TryResolveAllProjects(documentFilePath);
211+
Assert.True(snapshotResolver.TryResolveAllProjects(documentFilePath, out var projects));
221212

222213
// Assert
223214
var project = Assert.Single(projects);

0 commit comments

Comments
 (0)