diff --git a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs index f2409444e4364..3686199280288 100644 --- a/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs +++ b/src/Workspaces/Core/Portable/Classification/ClassifierHelper.cs @@ -137,8 +137,10 @@ private static void AdjustSpans(ArrayBuilder spans, TextSpan wid if (i > 0 && intersection != null) { - var isAdditiveClassification = spans[i - 1].TextSpan == span.TextSpan && - ClassificationTypeNames.AdditiveTypeNames.Contains(span.ClassificationType); + // 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); // Additive classifications are intended to overlap so do not ignore it. if (!isAdditiveClassification && spans[i - 1].TextSpan.End > intersection.Value.Start)