@@ -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