@@ -80,9 +80,8 @@ module Harness.LanguageService {
80
80
return JSON . stringify ( this . lineMap . lineStarts ( ) ) ;
81
81
}
82
82
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 ) ;
86
85
if ( range === null ) {
87
86
return null ;
88
87
}
@@ -102,14 +101,50 @@ module Harness.LanguageService {
102
101
}
103
102
}
104
103
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
+
105
139
export class NonCachingDocumentRegistry implements ts . DocumentRegistry {
140
+
106
141
public static Instance : ts . DocumentRegistry = new NonCachingDocumentRegistry ( ) ;
107
142
108
143
public acquireDocument (
109
144
fileName : string ,
110
145
compilationSettings : ts . CompilerOptions ,
111
146
scriptSnapshot : TypeScript . IScriptSnapshot ,
112
- version : string ,
147
+ version : number ,
113
148
isOpen : boolean ) : ts . SourceFile {
114
149
return ts . createSourceFile ( fileName , scriptSnapshot . getText ( 0 , scriptSnapshot . getLength ( ) ) , compilationSettings . target , version , isOpen ) ;
115
150
}
@@ -119,7 +154,7 @@ module Harness.LanguageService {
119
154
fileName : string ,
120
155
compilationSettings : ts . CompilerOptions ,
121
156
scriptSnapshot : TypeScript . IScriptSnapshot ,
122
- version : string ,
157
+ version : number ,
123
158
isOpen : boolean ,
124
159
textChangeRange : TypeScript . TextChangeRange
125
160
) : ts . SourceFile {
@@ -217,8 +252,8 @@ module Harness.LanguageService {
217
252
return new ScriptSnapshotShim ( this . getScriptInfo ( fileName ) ) ;
218
253
}
219
254
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 ;
222
257
}
223
258
224
259
public getScriptIsOpen ( fileName : string ) : boolean {
@@ -235,7 +270,7 @@ module Harness.LanguageService {
235
270
public getLanguageService ( ) : ts . LanguageServiceShim {
236
271
var ls = new TypeScript . Services . TypeScriptServicesFactory ( ) . createLanguageServiceShim ( this ) ;
237
272
this . ls = ls ;
238
- var hostAdapter = new ts . LanguageServiceShimHostAdapter ( this ) ;
273
+ var hostAdapter = new LanguageServiceShimHostAdapter ( this ) ;
239
274
240
275
this . newLS = ts . createLanguageService ( hostAdapter , NonCachingDocumentRegistry . Instance ) ;
241
276
return ls ;
0 commit comments