@@ -45,8 +45,9 @@ namespace ts.server {
4545 return lineMap ;
4646 }
4747
48- private lineOffsetToPosition ( fileName : string , lineOffset : protocol . Location ) : number {
49- return ts . computePositionOfLineAndCharacter ( this . getLineMap ( fileName ) , lineOffset . line - 1 , lineOffset . offset - 1 ) ;
48+ private lineOffsetToPosition ( fileName : string , lineOffset : protocol . Location , lineMap ?: number [ ] ) : number {
49+ lineMap = lineMap || this . getLineMap ( fileName ) ;
50+ return ts . computePositionOfLineAndCharacter ( lineMap , lineOffset . line - 1 , lineOffset . offset - 1 ) ;
5051 }
5152
5253 private positionToOneBasedLineOffset ( fileName : string , position : number ) : protocol . Location {
@@ -449,7 +450,7 @@ namespace ts.server {
449450 return this . lastRenameEntry . locations ;
450451 }
451452
452- decodeNavigationBarItems ( items : protocol . NavigationBarItem [ ] , fileName : string ) : NavigationBarItem [ ] {
453+ decodeNavigationBarItems ( items : protocol . NavigationBarItem [ ] , fileName : string , lineMap : number [ ] ) : NavigationBarItem [ ] {
453454 if ( ! items ) {
454455 return [ ] ;
455456 }
@@ -458,8 +459,11 @@ namespace ts.server {
458459 text : item . text ,
459460 kind : item . kind ,
460461 kindModifiers : item . kindModifiers || "" ,
461- spans : item . spans . map ( span => createTextSpanFromBounds ( this . lineOffsetToPosition ( fileName , span . start ) , this . lineOffsetToPosition ( fileName , span . end ) ) ) ,
462- childItems : this . decodeNavigationBarItems ( item . childItems , fileName ) ,
462+ spans : item . spans . map ( span =>
463+ createTextSpanFromBounds (
464+ this . lineOffsetToPosition ( fileName , span . start , lineMap ) ,
465+ this . lineOffsetToPosition ( fileName , span . end , lineMap ) ) ) ,
466+ childItems : this . decodeNavigationBarItems ( item . childItems , fileName , lineMap ) ,
463467 indent : item . indent ,
464468 bolded : false ,
465469 grayed : false
@@ -474,7 +478,8 @@ namespace ts.server {
474478 const request = this . processRequest < protocol . NavBarRequest > ( CommandNames . NavBar , args ) ;
475479 const response = this . processResponse < protocol . NavBarResponse > ( request ) ;
476480
477- return this . decodeNavigationBarItems ( response . body , fileName ) ;
481+ const lineMap = this . getLineMap ( fileName ) ;
482+ return this . decodeNavigationBarItems ( response . body , fileName , lineMap ) ;
478483 }
479484
480485 getNameOrDottedNameSpan ( fileName : string , startPos : number , endPos : number ) : TextSpan {
0 commit comments