@@ -86,17 +86,19 @@ namespace ts.server {
86
86
export class LSHost implements ts . LanguageServiceHost {
87
87
ls : ts . LanguageService = null ;
88
88
compilationSettings : ts . CompilerOptions ;
89
- filenameToScript : ts . Map < ScriptInfo > = { } ;
89
+ filenameToScript : ts . FileMap < ScriptInfo > ;
90
90
roots : ScriptInfo [ ] = [ ] ;
91
91
private resolvedModuleNames : ts . FileMap < Map < TimestampedResolvedModule > > ;
92
92
private moduleResolutionHost : ts . ModuleResolutionHost ;
93
93
94
94
constructor ( public host : ServerHost , public project : Project ) {
95
- this . resolvedModuleNames = ts . createFileMap < Map < TimestampedResolvedModule > > ( ts . createGetCanonicalFileName ( host . useCaseSensitiveFileNames ) )
95
+ var getCanonicalFileName = createGetCanonicalFileName ( host . useCaseSensitiveFileNames ) ;
96
+ this . resolvedModuleNames = createFileMap < Map < TimestampedResolvedModule > > ( getCanonicalFileName ) ;
97
+ this . filenameToScript = createFileMap < ScriptInfo > ( getCanonicalFileName ) ;
96
98
this . moduleResolutionHost = {
97
99
fileExists : fileName => this . fileExists ( fileName ) ,
98
100
readFile : fileName => this . host . readFile ( fileName )
99
- }
101
+ } ;
100
102
}
101
103
102
104
resolveModuleNames ( moduleNames : string [ ] , containingFile : string ) : ResolvedModule [ ] {
@@ -199,36 +201,32 @@ namespace ts.server {
199
201
200
202
removeReferencedFile ( info : ScriptInfo ) {
201
203
if ( ! info . isOpen ) {
202
- this . filenameToScript [ info . fileName ] = undefined ;
204
+ this . filenameToScript . remove ( info . fileName ) ;
203
205
this . resolvedModuleNames . remove ( info . fileName ) ;
204
206
}
205
207
}
206
208
207
209
getScriptInfo ( filename : string ) : ScriptInfo {
208
- var scriptInfo = ts . lookUp ( this . filenameToScript , filename ) ;
210
+ var scriptInfo = this . filenameToScript . get ( filename ) ;
209
211
if ( ! scriptInfo ) {
210
212
scriptInfo = this . project . openReferencedFile ( filename ) ;
211
213
if ( scriptInfo ) {
212
- this . filenameToScript [ scriptInfo . fileName ] = scriptInfo ;
214
+ this . filenameToScript . set ( scriptInfo . fileName , scriptInfo ) ;
213
215
}
214
216
}
215
- else {
216
- }
217
217
return scriptInfo ;
218
218
}
219
219
220
220
addRoot ( info : ScriptInfo ) {
221
- var scriptInfo = ts . lookUp ( this . filenameToScript , info . fileName ) ;
222
- if ( ! scriptInfo ) {
223
- this . filenameToScript [ info . fileName ] = info ;
221
+ if ( ! this . filenameToScript . contains ( info . fileName ) ) {
222
+ this . filenameToScript . set ( info . fileName , info ) ;
224
223
this . roots . push ( info ) ;
225
224
}
226
225
}
227
226
228
227
removeRoot ( info : ScriptInfo ) {
229
- var scriptInfo = ts . lookUp ( this . filenameToScript , info . fileName ) ;
230
- if ( scriptInfo ) {
231
- this . filenameToScript [ info . fileName ] = undefined ;
228
+ if ( ! this . filenameToScript . contains ( info . fileName ) ) {
229
+ this . filenameToScript . remove ( info . fileName ) ;
232
230
this . roots = copyListRemovingItem ( info , this . roots ) ;
233
231
this . resolvedModuleNames . remove ( info . fileName ) ;
234
232
}
@@ -279,7 +277,7 @@ namespace ts.server {
279
277
* @param line 1 based index
280
278
*/
281
279
lineToTextSpan ( filename : string , line : number ) : ts . TextSpan {
282
- var script : ScriptInfo = this . filenameToScript [ filename ] ;
280
+ var script : ScriptInfo = this . filenameToScript . get ( filename ) ;
283
281
var index = script . snap ( ) . index ;
284
282
285
283
var lineInfo = index . lineNumberToInfo ( line + 1 ) ;
@@ -299,7 +297,7 @@ namespace ts.server {
299
297
* @param offset 1 based index
300
298
*/
301
299
lineOffsetToPosition ( filename : string , line : number , offset : number ) : number {
302
- var script : ScriptInfo = this . filenameToScript [ filename ] ;
300
+ var script : ScriptInfo = this . filenameToScript . get ( filename ) ;
303
301
var index = script . snap ( ) . index ;
304
302
305
303
var lineInfo = index . lineNumberToInfo ( line ) ;
@@ -312,7 +310,7 @@ namespace ts.server {
312
310
* @param offset 1-based index
313
311
*/
314
312
positionToLineOffset ( filename : string , position : number ) : ILineInfo {
315
- var script : ScriptInfo = this . filenameToScript [ filename ] ;
313
+ var script : ScriptInfo = this . filenameToScript . get ( filename ) ;
316
314
var index = script . snap ( ) . index ;
317
315
var lineOffset = index . charOffsetToLineNumberAndPos ( position ) ;
318
316
return { line : lineOffset . line , offset : lineOffset . offset + 1 } ;
@@ -386,7 +384,7 @@ namespace ts.server {
386
384
}
387
385
388
386
getFileNames ( ) {
389
- let sourceFiles = this . program . getSourceFiles ( ) ;
387
+ var sourceFiles = this . program . getSourceFiles ( ) ;
390
388
return sourceFiles . map ( sourceFile => sourceFile . fileName ) ;
391
389
}
392
390
0 commit comments