@@ -936,14 +936,29 @@ function provideInlayHints(language: Language<string>, provideInlayHints: ts.Lan
936
936
if ( serviceScript ) {
937
937
let start : number | undefined ;
938
938
let end : number | undefined ;
939
- const map = language . maps . get ( serviceScript . code , targetScript ) ;
939
+ const map = language . maps . get ( serviceScript . code , sourceScript ) ;
940
940
for ( const mapping of map . mappings ) {
941
- if ( isInlayHintsEnabled ( mapping . data ) && mapping . sourceOffsets [ 0 ] >= span . start && mapping . sourceOffsets [ 0 ] <= span . start + span . length ) {
942
- start ??= mapping . generatedOffsets [ 0 ] ;
943
- end ??= mapping . generatedOffsets [ mapping . generatedOffsets . length - 1 ] ;
944
- start = Math . min ( start , mapping . generatedOffsets [ 0 ] ) ;
945
- end = Math . max ( end , mapping . generatedOffsets [ mapping . generatedOffsets . length - 1 ] ) ;
941
+ if ( ! isInlayHintsEnabled ( mapping . data ) ) {
942
+ continue ;
943
+ }
944
+ let mappingStart = mapping . sourceOffsets [ 0 ] ;
945
+ let genStart : number | undefined ;
946
+ let genEnd : number | undefined ;
947
+ if ( mappingStart >= span . start && mappingStart <= span . start + span . length ) {
948
+ genStart = mapping . generatedOffsets [ 0 ] ;
949
+ genEnd = mapping . generatedOffsets [ mapping . generatedOffsets . length - 1 ]
950
+ + ( mapping . generatedLengths ?? mapping . lengths ) [ mapping . generatedOffsets . length - 1 ] ;
951
+ } else if ( mappingStart < span . start && span . start < mappingStart + mapping . lengths [ 0 ]
952
+ && mapping . sourceOffsets . length == 1
953
+ && ( ! mapping . generatedLengths || mapping . generatedLengths [ 0 ] === mapping . lengths [ 0 ] )
954
+ ) {
955
+ genStart = mapping . generatedOffsets [ 0 ] + span . start - mappingStart
956
+ genEnd = Math . min ( genStart + span . length , mapping . generatedOffsets [ 0 ] + mapping . lengths [ 0 ] )
957
+ } else {
958
+ continue ;
946
959
}
960
+ start = Math . min ( start ?? genStart , genStart ) ;
961
+ end = Math . max ( end ?? genEnd , genEnd ) ;
947
962
}
948
963
if ( start === undefined || end === undefined ) {
949
964
start = 0 ;
0 commit comments