@@ -949,39 +949,14 @@ function provideInlayHints(language: Language<string>, provideInlayHints: ts.Lan
949949 return [ ] ;
950950 }
951951 if ( serviceScript ) {
952- let start : number | undefined ;
953- let end : number | undefined ;
954952 const map = language . maps . get ( serviceScript . code , sourceScript ) ;
955- for ( const mapping of map . mappings ) {
956- if ( ! isInlayHintsEnabled ( mapping . data ) ) {
957- continue ;
958- }
959- let mappingStart = mapping . sourceOffsets [ 0 ] ;
960- let genStart : number | undefined ;
961- let genEnd : number | undefined ;
962- if ( mappingStart >= span . start && mappingStart <= span . start + span . length ) {
963- genStart = mapping . generatedOffsets [ 0 ] ;
964- genEnd = mapping . generatedOffsets [ mapping . generatedOffsets . length - 1 ]
965- + ( mapping . generatedLengths ?? mapping . lengths ) [ mapping . generatedOffsets . length - 1 ] ;
966- } else if ( mappingStart < span . start && span . start < mappingStart + mapping . lengths [ 0 ]
967- && mapping . sourceOffsets . length == 1
968- && ( ! mapping . generatedLengths || mapping . generatedLengths [ 0 ] === mapping . lengths [ 0 ] )
969- ) {
970- genStart = mapping . generatedOffsets [ 0 ] + span . start - mappingStart ;
971- genEnd = Math . min ( genStart + span . length , mapping . generatedOffsets [ 0 ] + mapping . lengths [ 0 ] ) ;
972- } else {
973- continue ;
974- }
975- start = Math . min ( start ?? genStart , genStart ) ;
976- end = Math . max ( end ?? genEnd , genEnd ) ;
977- }
978- if ( start === undefined || end === undefined ) {
979- start = 0 ;
980- end = 0 ;
953+ const mapped = findOverlapCodeRange ( span . start , span . start + span . length , map , isSemanticTokensEnabled ) ;
954+ if ( ! mapped ) {
955+ return [ ] ;
981956 }
982957 const mappingOffset = getMappingOffset ( language , serviceScript ) ;
983- start += mappingOffset ;
984- end += mappingOffset ;
958+ const start = mapped . start + mappingOffset ;
959+ const end = mapped . end + mappingOffset ;
985960 const result = provideInlayHints ( targetScript . id , { start, length : end - start } , preferences ) ;
986961 const hints : ts . InlayHint [ ] = [ ] ;
987962 for ( const hint of result ) {
0 commit comments