Skip to content

Commit 7a2a85c

Browse files
authored
Ensure hover markdown for supported platforms uses non-breaking spaces for indentation (#78405)
Resolves dotnet/vscode-csharp#8204 Supported platform information uses 4 spaces in its resource string ` {0} - {1}` for indentation in tool tips. However, 4 spaces at the beginning of the line in markdown indicates a code block, breaking the rendering of the supported platform info in LSP (thanks to @JoeRobich for spotting that!) Since the 4 spaces are intended to be structural indentation, we need to use non breaking spaces (`&nbsp`) in markdown. We already handle that generally when we see a `TextTags.Space` kind. However in this case the 4 spaces were combined with the rest of the string and therefore tagged as `Text` instead of `Space` The fix is to separate out the structural spacing from the rest of the string, and tag it as such. This lets our existing handling of spaces convert to non breaking spaces when it needs to.
2 parents 06bac53 + 355ee34 commit 7a2a85c

26 files changed

+203
-73
lines changed

src/EditorFeatures/CSharpTest/Completion/CompletionProviders/SymbolCompletionProviderTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8785,8 +8785,8 @@ void goo()
87858785
var expectedDescription = $"""
87868786
({FeaturesResources.field}) int C.x
87878787
8788-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8789-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
8788+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8789+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
87908790
87918791
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
87928792
""";
@@ -8825,9 +8825,9 @@ void goo()
88258825
var expectedDescription = $"""
88268826
({FeaturesResources.field}) int C.x
88278827
8828-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8829-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
8830-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
8828+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8829+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
8830+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
88318831
88328832
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
88338833
""";
@@ -8869,8 +8869,8 @@ void goo()
88698869
var expectedDescription = $"""
88708870
({FeaturesResources.field}) int C.x
88718871
8872-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8873-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
8872+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8873+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
88748874
88758875
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
88768876
""";
@@ -8916,9 +8916,9 @@ void goo()
89168916
var expectedDescription = $"""
89178917
void G.DoGStuff()
89188918
8919-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Not_Available)}
8920-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Available)}
8921-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
8919+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Not_Available)}
8920+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Available)}
8921+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
89228922
89238923
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
89248924
""";
@@ -8981,8 +8981,8 @@ void M()
89818981
var expectedDescription = $"""
89828982
({FeaturesResources.local_variable}) int xyz
89838983
8984-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8985-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
8984+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
8985+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
89868986
89878987
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
89888988
""";

src/EditorFeatures/CSharpTest/QuickInfo/SemanticQuickInfoSourceTests.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6295,8 +6295,8 @@ void goo()
62956295
""";
62966296
var expectedDescription = Usage($"""
62976297
6298-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6299-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
6298+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6299+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
63006300
63016301
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
63026302
""", expectsWarningGlyph: true);
@@ -6331,8 +6331,8 @@ void goo()
63316331
""";
63326332
var expectedDescription = Usage($"""
63336333
6334-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Not_Available)}
6335-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Available)}
6334+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Not_Available)}
6335+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Available)}
63366336
63376337
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
63386338
""", expectsWarningGlyph: true);
@@ -6371,9 +6371,9 @@ void goo()
63716371
var expectedDescription = Usage(
63726372
$"""
63736373
6374-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6375-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
6376-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
6374+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6375+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
6376+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
63776377
63786378
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
63796379
""",
@@ -6415,8 +6415,8 @@ void goo()
64156415
""";
64166416
var expectedDescription = Usage($"""
64176417
6418-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6419-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
6418+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6419+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
64206420
64216421
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
64226422
""", expectsWarningGlyph: true);
@@ -6507,8 +6507,8 @@ void M()
65076507

65086508
await VerifyWithReferenceWorkerAsync(markup, [MainDescription($"({FeaturesResources.local_variable}) int x"), Usage($"""
65096509
6510-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6511-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
6510+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
6511+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
65126512
65136513
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
65146514
""", expectsWarningGlyph: true)]);

src/EditorFeatures/CSharpTest/SignatureHelp/AttributeSignatureHelpProviderTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,14 @@ void Goo()
998998
</Project>
999999
</Workspace>
10001000
""";
1001-
var expectedDescription = new SignatureHelpTestItem($"Secret()\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
1001+
var expectedDescription = new SignatureHelpTestItem($"""
1002+
Secret()
1003+
1004+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
1005+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
1006+
1007+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
1008+
""", currentParameterIndex: 0);
10021009
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
10031010
}
10041011

@@ -1036,7 +1043,14 @@ void Goo()
10361043
</Workspace>
10371044
""";
10381045

1039-
var expectedDescription = new SignatureHelpTestItem($"Secret()\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
1046+
var expectedDescription = new SignatureHelpTestItem($"""
1047+
Secret()
1048+
1049+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
1050+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
1051+
1052+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
1053+
""", currentParameterIndex: 0);
10401054
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
10411055
}
10421056

src/EditorFeatures/CSharpTest/SignatureHelp/ConstructorInitializerSignatureHelpProviderTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,14 @@ public SuperSecret(int secret) : base($$
597597
</Project>
598598
</Workspace>
599599
""";
600-
var expectedDescription = new SignatureHelpTestItem($"Secret(int secret)\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
600+
var expectedDescription = new SignatureHelpTestItem($"""
601+
Secret(int secret)
602+
603+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
604+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
605+
606+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
607+
""", currentParameterIndex: 0);
601608
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
602609
}
603610

@@ -638,7 +645,14 @@ public SuperSecret(int secret) : base($$
638645
</Workspace>
639646
""";
640647

641-
var expectedDescription = new SignatureHelpTestItem($"Secret(int secret)\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
648+
var expectedDescription = new SignatureHelpTestItem($"""
649+
Secret(int secret)
650+
651+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
652+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
653+
654+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
655+
""", currentParameterIndex: 0);
642656
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
643657
}
644658

src/EditorFeatures/CSharpTest/SignatureHelp/ElementAccessExpressionSignatureHelpProviderTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,14 @@ void goo()
816816
</Project>
817817
</Workspace>
818818
""";
819-
var expectedDescription = new SignatureHelpTestItem($"int C[int z]\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
819+
var expectedDescription = new SignatureHelpTestItem($"""
820+
int C[int z]
821+
822+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
823+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
824+
825+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
826+
""", currentParameterIndex: 0);
820827
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
821828
}
822829

@@ -858,7 +865,14 @@ void goo()
858865
</Workspace>
859866
""";
860867

861-
var expectedDescription = new SignatureHelpTestItem($"int C[int z]\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
868+
var expectedDescription = new SignatureHelpTestItem($"""
869+
int C[int z]
870+
871+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
872+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
873+
874+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
875+
""", currentParameterIndex: 0);
862876
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
863877
}
864878

src/EditorFeatures/CSharpTest/SignatureHelp/GenericNameSignatureHelpProviderTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,14 @@ void goo()
782782
</Project>
783783
</Workspace>
784784
""";
785-
var expectedDescription = new SignatureHelpTestItem($"D<T>\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
785+
var expectedDescription = new SignatureHelpTestItem($"""
786+
D<T>
787+
788+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
789+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
790+
791+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
792+
""", currentParameterIndex: 0);
786793
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
787794
}
788795

@@ -820,7 +827,14 @@ void goo()
820827
</Workspace>
821828
""";
822829

823-
var expectedDescription = new SignatureHelpTestItem($"D<T>\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0);
830+
var expectedDescription = new SignatureHelpTestItem($"""
831+
D<T>
832+
833+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
834+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
835+
836+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
837+
""", currentParameterIndex: 0);
824838
await VerifyItemWithReferenceWorkerAsync(markup, [expectedDescription], false);
825839
}
826840

src/EditorFeatures/CSharpTest/SignatureHelp/InvocationExpressionSignatureHelpProviderTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2082,8 +2082,8 @@ void goo()
20822082
await VerifyItemWithReferenceWorkerAsync(markup, [new SignatureHelpTestItem($"""
20832083
void C.bar()
20842084
2085-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2086-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
2085+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2086+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
20872087
20882088
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
20892089
""", currentParameterIndex: 0)], hideAdvancedMembers: false);
@@ -2126,8 +2126,8 @@ void goo()
21262126
await VerifyItemWithReferenceWorkerAsync(markup, [new SignatureHelpTestItem($"""
21272127
void C.bar()
21282128
2129-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2130-
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
2129+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2130+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
21312131
21322132
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
21332133
""", currentParameterIndex: 0)], hideAdvancedMembers: false);
@@ -2341,8 +2341,8 @@ void Shared()
23412341
await VerifyItemWithReferenceWorkerAsync(markup, [new SignatureHelpTestItem($"""
23422342
void C.Do(int x)
23432343
2344-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2345-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
2344+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2345+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
23462346
23472347
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
23482348
""", currentParameterIndex: 0)], hideAdvancedMembers: false);
@@ -2613,8 +2613,8 @@ void goo()
26132613
expectedItems.Add(new SignatureHelpTestItem($"""
26142614
void C.M<object>(Action<object> arg1, object arg2, bool flag)
26152615
2616-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2617-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
2616+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2617+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
26182618
26192619
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
26202620
""", currentParameterIndex: 0));
@@ -2625,8 +2625,8 @@ void C.M<object>(Action<object> arg1, object arg2, bool flag)
26252625
expectedItems.Add(new SignatureHelpTestItem($"""
26262626
void C.M<T>(Action<T> arg1, T arg2, bool flag)
26272627
2628-
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2629-
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
2628+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
2629+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
26302630
26312631
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
26322632
""", currentParameterIndex: 0));

src/EditorFeatures/CSharpTest/SignatureHelp/ObjectCreationExpressionSignatureHelpProviderTests.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,14 @@ void goo()
615615
""";
616616

617617
await VerifyItemWithReferenceWorkerAsync(
618-
markup, [new($"D()\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0)], false);
618+
markup, [new($"""
619+
D()
620+
621+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
622+
{string.Format(FeaturesResources._0_1, "Proj2", FeaturesResources.Not_Available)}
623+
624+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
625+
""", currentParameterIndex: 0)], false);
619626
}
620627

621628
[Fact]
@@ -653,7 +660,14 @@ void goo()
653660
""";
654661

655662
await VerifyItemWithReferenceWorkerAsync(
656-
markup, [new($"D()\r\n\r\n{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}\r\n{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}\r\n\r\n{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}", currentParameterIndex: 0)], false);
663+
markup, [new($"""
664+
D()
665+
666+
{string.Format(FeaturesResources._0_1, "Proj1", FeaturesResources.Available)}
667+
{string.Format(FeaturesResources._0_1, "Proj3", FeaturesResources.Not_Available)}
668+
669+
{FeaturesResources.You_can_use_the_navigation_bar_to_switch_contexts}
670+
""", currentParameterIndex: 0)], false);
657671
}
658672

659673
[Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/1067933")]

0 commit comments

Comments
 (0)