diff --git a/src/EditorFeatures/CSharpTest/Classification/SemanticClassifierTests_TestMarkup.cs b/src/EditorFeatures/CSharpTest/Classification/SemanticClassifierTests_TestMarkup.cs index b84547333eeac..ad522e9d63473 100644 --- a/src/EditorFeatures/CSharpTest/Classification/SemanticClassifierTests_TestMarkup.cs +++ b/src/EditorFeatures/CSharpTest/Classification/SemanticClassifierTests_TestMarkup.cs @@ -20,7 +20,7 @@ namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Classification; -public partial class SemanticClassifierTests : AbstractCSharpClassifierTests +public sealed partial class SemanticClassifierTests : AbstractCSharpClassifierTests { private const string s_testMarkup = """ @@ -53,6 +53,27 @@ void M() await TestEmbeddedCSharpWithMultipleSpansAsync(allCode, testHost, spans, expected); } + private async Task TestSingleLineEmbeddedCSharpAsync( + string code, + TestHost testHost, + params FormattedClassification[] expected) + { + var allCode = $$""""" + class C + { + void M() + { + Test.M(""""{{code}}""""); + } + } + """"" + s_testMarkup; + + var start = allCode.IndexOf(code, StringComparison.Ordinal); + var length = code.Length; + var spans = ImmutableArray.Create(new TextSpan(start, length)); + await TestEmbeddedCSharpWithMultipleSpansAsync(allCode, testHost, spans, expected); + } + private async Task TestEmbeddedCSharpWithMultipleSpansAsync( string allCode, TestHost testHost, @@ -457,4 +478,26 @@ class D Punctuation.Semicolon, Punctuation.CloseCurly); } + + [Theory, CombinatorialData] + [WorkItem("https://github.com/dotnet/roslyn/issues/76575")] + public async Task TestOnlyMarkup1(TestHost testHost) + { + await TestEmbeddedCSharpAsync( + "[||]", + testHost, + TestCodeMarkdown("[|"), + TestCodeMarkdown("|]")); + } + + [Theory, CombinatorialData] + [WorkItem("https://github.com/dotnet/roslyn/issues/76575")] + public async Task TestOnlyMarkup2(TestHost testHost) + { + await TestSingleLineEmbeddedCSharpAsync( + "[||]", + testHost, + TestCodeMarkdown("[|"), + TestCodeMarkdown("|]")); + } } diff --git a/src/Features/CSharp/Portable/EmbeddedLanguages/CSharpTestEmbeddedLanguageClassifier.cs b/src/Features/CSharp/Portable/EmbeddedLanguages/CSharpTestEmbeddedLanguageClassifier.cs index 3880d9cb4b2a1..10283be6597f0 100644 --- a/src/Features/CSharp/Portable/EmbeddedLanguages/CSharpTestEmbeddedLanguageClassifier.cs +++ b/src/Features/CSharp/Portable/EmbeddedLanguages/CSharpTestEmbeddedLanguageClassifier.cs @@ -20,14 +20,10 @@ namespace Microsoft.CodeAnalysis.CSharp.Features.EmbeddedLanguages; [ExportEmbeddedLanguageClassifier( PredefinedEmbeddedLanguageNames.CSharpTest, [LanguageNames.CSharp], supportsUnannotatedAPIs: false, PredefinedEmbeddedLanguageNames.CSharpTest), Shared] -internal sealed class CSharpTestEmbeddedLanguageClassifier : IEmbeddedLanguageClassifier +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal sealed class CSharpTestEmbeddedLanguageClassifier() : IEmbeddedLanguageClassifier { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public CSharpTestEmbeddedLanguageClassifier() - { - } - private static TextSpan FromBounds(VirtualChar vc1, VirtualChar vc2) => TextSpan.FromBounds(vc1.Span.Start, vc2.Span.End); @@ -90,7 +86,7 @@ public void RegisterClassifications(EmbeddedLanguageClassificationContext contex } } } - else + else if (!virtualCharsWithoutMarkup.IsEmpty) { context.AddClassification( ClassificationTypeNames.TestCode,