From 91d5faec2d147ffad6c5aadf00f0bb104b703449 Mon Sep 17 00:00:00 2001 From: filipw Date: Tue, 7 Sep 2021 14:41:04 +0200 Subject: [PATCH 1/2] handle ClassificationTypeNames.RecordStructName --- .../SemanticHighlight/SemanticHighlightService.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/OmniSharp.Roslyn.CSharp/Services/SemanticHighlight/SemanticHighlightService.cs b/src/OmniSharp.Roslyn.CSharp/Services/SemanticHighlight/SemanticHighlightService.cs index 1fd8371b27..3f93d0ba4e 100644 --- a/src/OmniSharp.Roslyn.CSharp/Services/SemanticHighlight/SemanticHighlightService.cs +++ b/src/OmniSharp.Roslyn.CSharp/Services/SemanticHighlight/SemanticHighlightService.cs @@ -82,13 +82,16 @@ private static SemanticHighlightSpan CreateSemanticSpan(IEnumerable _classificationMap = - new Dictionary + new() { [ClassificationTypeNames.Comment] = SemanticHighlightClassification.Comment, [ClassificationTypeNames.ExcludedCode] = SemanticHighlightClassification.ExcludedCode, @@ -126,6 +129,7 @@ class ClassifiedResult [ClassificationTypeNames.InterfaceName] = SemanticHighlightClassification.InterfaceName, [ClassificationTypeNames.ModuleName] = SemanticHighlightClassification.ModuleName, [ClassificationTypeNames.StructName] = SemanticHighlightClassification.StructName, + [ClassificationTypeNames.RecordStructName] = SemanticHighlightClassification.StructName, [ClassificationTypeNames.TypeParameterName] = SemanticHighlightClassification.TypeParameterName, [ClassificationTypeNames.FieldName] = SemanticHighlightClassification.FieldName, [ClassificationTypeNames.EnumMemberName] = SemanticHighlightClassification.EnumMemberName, @@ -171,7 +175,7 @@ class ClassifiedResult }; private static readonly Dictionary _modifierMap = - new Dictionary + new() { [ClassificationTypeNames.StaticSymbol] = SemanticHighlightModifier.Static, }; From 72030e728a51c036bf12fe4a56070cad795b065e Mon Sep 17 00:00:00 2001 From: filipw Date: Tue, 7 Sep 2021 14:41:12 +0200 Subject: [PATCH 2/2] test for RecordStructName --- .../SemanticHighlightFacts.cs | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/tests/OmniSharp.Roslyn.CSharp.Tests/SemanticHighlightFacts.cs b/tests/OmniSharp.Roslyn.CSharp.Tests/SemanticHighlightFacts.cs index 71a17e9e5a..435c3e8061 100644 --- a/tests/OmniSharp.Roslyn.CSharp.Tests/SemanticHighlightFacts.cs +++ b/tests/OmniSharp.Roslyn.CSharp.Tests/SemanticHighlightFacts.cs @@ -275,6 +275,45 @@ record R1(string S, int I); ); } + [Fact] + public async Task SemanticHighlightRecordStructName() + { + var testFile = new TestFile("a.cs", @" +R1 r1 = new R1(string.Empty, 1); +record struct R1(string S, int I); +"); + + var highlights = await GetSemanticHighlightsForFileAsync(testFile); + + AssertSyntax(highlights, testFile.Content.Code, 0, + StructName("R1"), + Local("r1"), + Operator("="), + Keyword("new"), + StructName("R1"), + Punctuation("("), + Keyword("string"), + Operator("."), + Field("Empty", SemanticHighlightModifier.Static), + Punctuation(","), + Number("1"), + Punctuation(")"), + Punctuation(";"), + + Keyword("record"), + Keyword("struct"), + StructName("R1"), + Punctuation("("), + Keyword("string"), + Parameter("S"), + Punctuation(","), + Keyword("int"), + Parameter("I"), + Punctuation(")"), + Punctuation(";") + ); + } + private Task GetSemanticHighlightsForFileAsync(TestFile testFile) { return GetSemanticHighlightsAsync(testFile, range: null); @@ -352,6 +391,7 @@ private static void AssertSyntax(SemanticHighlightSpan[] highlights, string code private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) Method(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.MethodName, text, modifiers); private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) Local(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.LocalName, text, modifiers); private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) ClassName(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.ClassName, text, modifiers); + private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) StructName(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.StructName, text, modifiers); private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) Field(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.FieldName, text, modifiers); private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) Identifier(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.Identifier, text, modifiers); private static (SemanticHighlightClassification type, string text, SemanticHighlightModifier[] modifiers) Parameter(string text, params SemanticHighlightModifier[] modifiers) => (SemanticHighlightClassification.ParameterName, text, modifiers);