From d83e394f0c63927aaca73f251357a88715161df6 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Wed, 19 Jan 2022 13:59:56 -0800 Subject: [PATCH 1/3] Handle AdditiveSpans in either order --- .../Core/Portable/Classification/ClassifierHelper.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs index f2409444e4364..9d363a29ac114 100644 --- a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs +++ b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs @@ -137,8 +137,9 @@ private static void AdjustSpans(ArrayBuilder spans, TextSpan wid if (i > 0 && intersection != null) { + // The additiveType's may appear before or after their modifier due to sorting. var isAdditiveClassification = spans[i - 1].TextSpan == span.TextSpan && - ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType); + ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType) || ClassificationTypeNames.AdditiveTypeNames.Contains(spans[i - 1].ClassificationType); // Additive classifications are intended to overlap so do not ignore it. if (!isAdditiveClassification && spans[i - 1].TextSpan.End > intersection.Value.Start) From 58c4e9e407ae0e58f1cf19d374a84f022dffaaff Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Fri, 21 Jan 2022 16:15:20 -0800 Subject: [PATCH 2/3] Update src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs Co-authored-by: Andrew Hall --- .../Core/Portable/Classification/ClassifierHelper.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs index 9d363a29ac114..1636d807525a8 100644 --- a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs +++ b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs @@ -138,6 +138,9 @@ private static void AdjustSpans(ArrayBuilder spans, TextSpan wid if (i > 0 && intersection != null) { // The additiveType's may appear before or after their modifier due to sorting. + var previousSpan = spans[i - 1]; + var isAdditiveClassification = previousSpan.TextSpan == span.TextSpan && + ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType) || ClassificationTypeNames.AdditiveTypeNames.Contains(previousSpan.ClassificationType); var isAdditiveClassification = spans[i - 1].TextSpan == span.TextSpan && ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType) || ClassificationTypeNames.AdditiveTypeNames.Contains(spans[i - 1].ClassificationType); From 85fcdf4f6fa064ad3050bdd539d6e43c756b2064 Mon Sep 17 00:00:00 2001 From: Ryan Brandenburg Date: Fri, 21 Jan 2022 16:58:56 -0800 Subject: [PATCH 3/3] Cleanup missed suggestion --- src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs index 1636d807525a8..3686199280288 100644 --- a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs +++ b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs @@ -141,8 +141,6 @@ private static void AdjustSpans(ArrayBuilder spans, TextSpan wid var previousSpan = spans[i - 1]; var isAdditiveClassification = previousSpan.TextSpan == span.TextSpan && ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType) || ClassificationTypeNames.AdditiveTypeNames.Contains(previousSpan.ClassificationType); - var isAdditiveClassification = spans[i - 1].TextSpan == span.TextSpan && - ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType) || ClassificationTypeNames.AdditiveTypeNames.Contains(spans[i - 1].ClassificationType); // Additive classifications are intended to overlap so do not ignore it. if (!isAdditiveClassification && spans[i - 1].TextSpan.End > intersection.Value.Start)