@@ -49,14 +49,19 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(InlayHintParams request)
4949
5050 internal static async Task < LSP . InlayHint [ ] ? > GetInlayHintsAsync ( Document document , TextDocumentIdentifier textDocumentIdentifier , LSP . Range range , InlineHintsOptions options , bool displayAllOverride , InlayHintCache inlayHintCache , CancellationToken cancellationToken )
5151 {
52- var text = await document . GetValueTextAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
5352 var hints = await CalculateInlayHintsAsync ( document , range , options , displayAllOverride , cancellationToken ) . ConfigureAwait ( false ) ;
54- var syntaxVersion = await document . GetSyntaxVersionAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
5553
5654 // Store the members in the resolve cache so that when we get a resolve request for a particular
5755 // member we can re-use the inline hint.
5856 var resultId = inlayHintCache . UpdateCache ( new InlayHintCache . InlayHintCacheEntry ( hints ) ) ;
5957
58+ if ( hints . Length == 0 )
59+ return Array . Empty < LSP . InlayHint > ( ) ;
60+
61+ var text = await document . GetValueTextAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
62+ var syntaxVersion = await document . GetSyntaxVersionAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
63+ var syntaxVersionString = syntaxVersion . ToString ( ) ;
64+
6065 var inlayHints = new LSP . InlayHint [ hints . Length ] ;
6166 for ( var i = 0 ; i < hints . Length ; i ++ )
6267 {
@@ -85,7 +90,7 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(InlayHintParams request)
8590 ToolTip = null ,
8691 PaddingLeft = leftPadding ,
8792 PaddingRight = rightPadding ,
88- Data = new InlayHintResolveData ( resultId , i , textDocumentIdentifier , syntaxVersion . ToString ( ) , range , displayAllOverride )
93+ Data = new InlayHintResolveData ( resultId , i , textDocumentIdentifier , syntaxVersionString , range , displayAllOverride )
8994 } ;
9095
9196 inlayHints [ i ] = inlayHint ;
@@ -110,35 +115,34 @@ internal static async Task<ImmutableArray<InlineHint>> CalculateInlayHintsAsync(
110115 /// </summary>
111116 private static ( string label , bool leftPadding , bool rightPadding ) Trim ( ImmutableArray < TaggedText > taggedTexts )
112117 {
113- using var _ = ArrayBuilder < TaggedText > . GetInstance ( out var result ) ;
114118 var leftPadding = false ;
115119 var rightPadding = false ;
116120
121+ if ( taggedTexts . Length == 0 )
122+ return ( string . Empty , leftPadding , rightPadding ) ;
123+
124+ var first = taggedTexts . First ( ) ;
125+ var trimStart = first . Text . TrimStart ( ) ;
126+ leftPadding = first . Text . Length - trimStart . Length != 0 ;
127+
117128 if ( taggedTexts . Length == 1 )
118129 {
119- var first = taggedTexts . First ( ) ;
120-
121- var trimStart = first . Text . TrimStart ( ) ;
122130 var trimBoth = trimStart . TrimEnd ( ) ;
123- result . Add ( new TaggedText ( first . Tag , trimBoth ) ) ;
124- leftPadding = first . Text . Length - trimStart . Length != 0 ;
125131 rightPadding = trimStart . Length - trimBoth . Length != 0 ;
132+
133+ return ( trimBoth , leftPadding , rightPadding ) ;
126134 }
127- else if ( taggedTexts . Length >= 2 )
128- {
129- var first = taggedTexts . First ( ) ;
130- var trimStart = first . Text . TrimStart ( ) ;
131- result . Add ( new TaggedText ( first . Tag , trimStart ) ) ;
132- leftPadding = first . Text . Length - trimStart . Length != 0 ;
133-
134- for ( var i = 1 ; i < taggedTexts . Length - 1 ; i ++ )
135- result . Add ( taggedTexts [ i ] ) ;
136-
137- var last = taggedTexts . Last ( ) ;
138- var trimEnd = last . Text . TrimEnd ( ) ;
139- result . Add ( new TaggedText ( last . Tag , trimEnd ) ) ;
140- rightPadding = last . Text . Length - trimEnd . Length != 0 ;
141- }
135+
136+ using var _ = ArrayBuilder < TaggedText > . GetInstance ( out var result ) ;
137+ result . Add ( new TaggedText ( first . Tag , trimStart ) ) ;
138+
139+ for ( var i = 1 ; i < taggedTexts . Length - 1 ; i ++ )
140+ result . Add ( taggedTexts [ i ] ) ;
141+
142+ var last = taggedTexts . Last ( ) ;
143+ var trimEnd = last . Text . TrimEnd ( ) ;
144+ result . Add ( new TaggedText ( last . Tag , trimEnd ) ) ;
145+ rightPadding = last . Text . Length - trimEnd . Length != 0 ;
142146
143147 return ( result . ToImmutable ( ) . JoinText ( ) , leftPadding , rightPadding ) ;
144148 }
0 commit comments