Skip to content

Commit b4ac384

Browse files
Simplify
1 parent 6a81940 commit b4ac384

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

src/EditorFeatures/CSharp/Highlighting/KeywordHighlighters/AsyncAwaitHighlighter.cs

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -62,27 +62,8 @@ private static void HighlightRelatedKeywords(SyntaxNode node, List<TextSpan> spa
6262
TryAddAsyncOrAwaitKeyword(forEachStatement.AwaitKeyword, spans);
6363
return;
6464
case AwaitExpressionSyntax awaitExpression:
65-
// Note if there is already a highlight for the previous token, merge it
66-
// with this span. That way, we highlight nested awaits with a single span.
67-
var handled = false;
68-
var awaitToken = awaitExpression.AwaitKeyword;
69-
var previousToken = awaitToken.GetPreviousToken();
70-
if (!previousToken.Span.IsEmpty)
71-
{
72-
var index = spans.FindIndex(s => s.Contains(previousToken.Span));
73-
if (index >= 0)
74-
{
75-
var span = spans[index];
76-
spans[index] = TextSpan.FromBounds(span.Start, awaitToken.Span.End);
77-
handled = true;
78-
}
79-
}
80-
81-
if (!handled)
82-
{
83-
spans.Add(awaitToken.Span);
84-
}
85-
break;
65+
TryAddAsyncOrAwaitKeyword(awaitExpression.AwaitKeyword, spans);
66+
return;
8667
}
8768
}
8869

@@ -101,6 +82,20 @@ private static bool TryAddAsyncOrAwaitKeyword(SyntaxToken mod, List<TextSpan> sp
10182
{
10283
if (mod.IsKind(SyntaxKind.AsyncKeyword, SyntaxKind.AwaitKeyword))
10384
{
85+
// Note if there is already a highlight for the previous token, merge it with this
86+
// span. That way, we highlight nested awaits with a single span.
87+
88+
if (spans.Count > 0)
89+
{
90+
var previousToken = mod.GetPreviousToken();
91+
var lastSpan = spans[spans.Count - 1];
92+
if (lastSpan == previousToken.Span)
93+
{
94+
spans[spans.Count - 1] = TextSpan.FromBounds(lastSpan.Start, mod.Span.End);
95+
return true;
96+
}
97+
}
98+
10499
spans.Add(mod.Span);
105100
return true;
106101
}

0 commit comments

Comments
 (0)