From a2ed8a021f80169cfeef49f36bddd0fd98827ec9 Mon Sep 17 00:00:00 2001 From: Heejae Chang Date: Wed, 9 Mar 2016 06:50:02 -0800 Subject: [PATCH] Fixed BasicVenus.xml failure --- ...DiagnosticsTaggerProvider.TaggerProvider.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.TaggerProvider.cs b/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.TaggerProvider.cs index 6171cce5f4d..c3cda6f9447 100644 --- a/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.TaggerProvider.cs +++ b/src/EditorFeatures/Core/Implementation/Diagnostics/AbstractDiagnosticsTaggerProvider.TaggerProvider.cs @@ -124,8 +124,7 @@ private void ProduceTags(TaggerContext context, DocumentSnapshotSpan spanT { if (_owner.IncludeDiagnostic(diagnosticData)) { - var actualSpan = diagnosticData - .GetExistingOrCalculatedTextSpan(sourceText) + var actualSpan = AdjustSpan(diagnosticData.GetExistingOrCalculatedTextSpan(sourceText), sourceText) .ToSnapshotSpan(editorSnapshot) .TranslateTo(requestedSnapshot, SpanTrackingMode.EdgeExclusive); @@ -142,6 +141,21 @@ private void ProduceTags(TaggerContext context, DocumentSnapshotSpan spanT } } + private TextSpan AdjustSpan(TextSpan span, SourceText text) + { + var start = Math.Max(0, Math.Min(span.Start, text.Length)); + var end = Math.Max(0, Math.Min(span.End, text.Length)); + + if (start > end) + { + var temp = end; + end = start; + start = temp; + } + + return TextSpan.FromBounds(start, end); + } + private bool IsSuppressed(NormalizedSnapshotSpanCollection suppressedSpans, SnapshotSpan span) { return suppressedSpans != null && suppressedSpans.IntersectsWith(span); -- GitLab