taskListDescriptors, CancellationToken cancellationToken)
=> instance.HandleTaskListItemRequestAsync(razorDocument, taskListDescriptors, cancellationToken);
diff --git a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs
index 58cee9b2304..563c963418c 100644
--- a/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs
+++ b/src/Razor/test/Microsoft.VisualStudio.LanguageServices.Razor.Test/Cohost/CohostDocumentPullDiagnosticsTest.cs
@@ -16,6 +16,74 @@ namespace Microsoft.VisualStudio.Razor.LanguageClient.Cohost;
public partial class CohostDocumentPullDiagnosticsTest
{
+ [Fact]
+ public Task OneOfEachDiagnostic()
+ {
+ TestCode input = """
+
+
+ {|HTM1337:|}
+
+ {|RZ10012:|}
+
+
+
+
+
+
+
+ @code
+ {
+ public void IJustMetYou()
+ {
+ {|CS0103:CallMeMaybe|}();
+ }
+ }
+ """;
+
+ return VerifyDiagnosticsAsync(input,
+ htmlResponse: [new VSInternalDiagnosticReport
+ {
+ Diagnostics =
+ [
+ new VSDiagnostic
+ {
+ Code = "HTM1337",
+ Range = SourceText.From(input.Text).GetRange(input.NamedSpans["HTM1337"].First()),
+ Projects = [new VSDiagnosticProjectInformation()
+ {
+ ProjectIdentifier = "Html"
+ }]
+ },
+ new VSDiagnostic
+ {
+ Code = "TS2304",
+ Range = SourceText.From(input.Text).GetRange(input.NamedSpans["TS2304"].First()),
+ Projects = [new VSDiagnosticProjectInformation()
+ {
+ ProjectIdentifier = "TypeScript"
+ }]
+ },
+ new VSDiagnostic
+ {
+ Code = "CSS002",
+ Range = SourceText.From(input.Text).GetRange(input.NamedSpans["CSS002"].First()),
+ Projects = [new VSDiagnosticProjectInformation()
+ {
+ ProjectIdentifier = "CSS"
+ }]
+ },
+ ]
+ }]);
+ }
+
[Fact]
public Task Html()
{
@@ -451,5 +519,21 @@ private async Task VerifyDiagnosticsAsync(TestCode input, VSInternalDiagnosticRe
}
AssertEx.EqualOrDiff(input.OriginalInput, testOutput);
+
+ if (!taskListRequest)
+ {
+ Assert.NotNull(report.Diagnostics);
+ Assert.All(report.Diagnostics,
+ d =>
+ {
+ var vsDiagnostic = Assert.IsType(d);
+ Assert.NotNull(vsDiagnostic.Identifier);
+ Assert.NotNull(vsDiagnostic.Projects);
+ var project = Assert.Single(vsDiagnostic.Projects);
+ Assert.NotNull(project.ProjectIdentifier);
+ // We always report the same project info for all diagnostics
+ Assert.Same(project, ((VSDiagnostic)report.Diagnostics.First()).Projects.Single());
+ });
+ }
}
}