@@ -80,9 +80,8 @@ module Harness.LanguageService {
8080 return JSON . stringify ( this . lineMap . lineStarts ( ) ) ;
8181 }
8282
83- public getChangeRange ( oldScript : ts . ScriptSnapshotShim ) : string {
84- var oldShim = < ScriptSnapshotShim > oldScript ;
85- var range = this . scriptInfo . getTextChangeRangeBetweenVersions ( oldShim . version , this . version ) ;
83+ public getTextChangeRangeSinceVersion ( scriptVersion : number ) : string {
84+ var range = this . scriptInfo . getTextChangeRangeBetweenVersions ( scriptVersion , this . version ) ;
8685 if ( range === null ) {
8786 return null ;
8887 }
@@ -102,14 +101,50 @@ module Harness.LanguageService {
102101 }
103102 }
104103
104+ class ScriptSnapshotShimAdapter implements TypeScript . IScriptSnapshot {
105+ private lineStartPositions : number [ ] = null ;
106+ constructor ( private scriptSnapshotShim : ts . ScriptSnapshotShim ) { }
107+ getText ( start : number , end : number ) : string { return this . scriptSnapshotShim . getText ( start , end ) ; }
108+ getLength ( ) : number { return this . scriptSnapshotShim . getLength ( ) ; }
109+ getLineStartPositions ( ) : number [ ] { return JSON . parse ( this . scriptSnapshotShim . getLineStartPositions ( ) ) ; }
110+ getTextChangeRangeSinceVersion ( scriptVersion : number ) : TypeScript . TextChangeRange {
111+ var encoded = this . scriptSnapshotShim . getTextChangeRangeSinceVersion ( scriptVersion ) ;
112+ if ( encoded == null ) {
113+ return null ;
114+ }
115+
116+ var decoded : { span : { start : number ; length : number ; } ; newLength : number ; } = JSON . parse ( encoded ) ;
117+ return new TypeScript . TextChangeRange (
118+ new TypeScript . TextSpan ( decoded . span . start , decoded . span . length ) , decoded . newLength ) ;
119+ }
120+ }
121+
122+ class LanguageServiceShimHostAdapter implements ts . LanguageServiceHost {
123+ constructor ( private shimHost : ts . LanguageServiceShimHost ) { }
124+ information ( ) : boolean { return this . shimHost . information ( ) ; }
125+ debug ( ) : boolean { return this . shimHost . debug ( ) ; }
126+ warning ( ) : boolean { return this . shimHost . warning ( ) ; }
127+ error ( ) : boolean { return this . shimHost . error ( ) ; }
128+ fatal ( ) : boolean { return this . shimHost . fatal ( ) ; }
129+ log ( s : string ) : void { this . shimHost . log ( s ) ; }
130+ getCompilationSettings ( ) : ts . CompilerOptions { return JSON . parse ( this . shimHost . getCompilationSettings ( ) ) ; }
131+ getScriptFileNames ( ) : string [ ] { return JSON . parse ( this . shimHost . getScriptFileNames ( ) ) ; }
132+ getScriptSnapshot ( fileName : string ) : TypeScript . IScriptSnapshot { return new ScriptSnapshotShimAdapter ( this . shimHost . getScriptSnapshot ( fileName ) ) ; }
133+ getScriptVersion ( fileName : string ) : number { return this . shimHost . getScriptVersion ( fileName ) ; }
134+ getScriptIsOpen ( fileName : string ) : boolean { return this . shimHost . getScriptIsOpen ( fileName ) ; }
135+ getLocalizedDiagnosticMessages ( ) : any { JSON . parse ( this . shimHost . getLocalizedDiagnosticMessages ( ) ) ; }
136+ getCancellationToken ( ) : ts . CancellationToken { return this . shimHost . getCancellationToken ( ) ; }
137+ }
138+
105139 export class NonCachingDocumentRegistry implements ts . DocumentRegistry {
140+
106141 public static Instance : ts . DocumentRegistry = new NonCachingDocumentRegistry ( ) ;
107142
108143 public acquireDocument (
109144 fileName : string ,
110145 compilationSettings : ts . CompilerOptions ,
111146 scriptSnapshot : TypeScript . IScriptSnapshot ,
112- version : string ,
147+ version : number ,
113148 isOpen : boolean ) : ts . SourceFile {
114149 return ts . createSourceFile ( fileName , scriptSnapshot . getText ( 0 , scriptSnapshot . getLength ( ) ) , compilationSettings . target , version , isOpen ) ;
115150 }
@@ -119,7 +154,7 @@ module Harness.LanguageService {
119154 fileName : string ,
120155 compilationSettings : ts . CompilerOptions ,
121156 scriptSnapshot : TypeScript . IScriptSnapshot ,
122- version : string ,
157+ version : number ,
123158 isOpen : boolean ,
124159 textChangeRange : TypeScript . TextChangeRange
125160 ) : ts . SourceFile {
@@ -217,8 +252,8 @@ module Harness.LanguageService {
217252 return new ScriptSnapshotShim ( this . getScriptInfo ( fileName ) ) ;
218253 }
219254
220- public getScriptVersion ( fileName : string ) : string {
221- return this . getScriptInfo ( fileName ) . version . toString ( ) ;
255+ public getScriptVersion ( fileName : string ) : number {
256+ return this . getScriptInfo ( fileName ) . version ;
222257 }
223258
224259 public getScriptIsOpen ( fileName : string ) : boolean {
@@ -235,7 +270,7 @@ module Harness.LanguageService {
235270 public getLanguageService ( ) : ts . LanguageServiceShim {
236271 var ls = new TypeScript . Services . TypeScriptServicesFactory ( ) . createLanguageServiceShim ( this ) ;
237272 this . ls = ls ;
238- var hostAdapter = new ts . LanguageServiceShimHostAdapter ( this ) ;
273+ var hostAdapter = new LanguageServiceShimHostAdapter ( this ) ;
239274
240275 this . newLS = ts . createLanguageService ( hostAdapter , NonCachingDocumentRegistry . Instance ) ;
241276 return ls ;
0 commit comments