@@ -373,12 +373,13 @@ protected ITypeScriptLint createTslint(File tslintFile, File tslintJsonFile, Fil
373
373
@ Override
374
374
public void compileWithTsserver (List <IFile > updatedTsFiles , List <IFile > removedTsFiles , IProgressMonitor monitor )
375
375
throws TypeScriptException {
376
+ List <IFile > tsFilesToClosed = new ArrayList <>();
376
377
try {
377
378
List <String > tsFilesToCompile = new ArrayList <>();
378
379
// Collect ts files to compile by using tsserver to retrieve
379
380
// dependencies files.
380
381
// It works only if tsconfig.json declares "compileOnSave: true".
381
- collectTsFilesToCompile (updatedTsFiles , getClient (), tsFilesToCompile , false );
382
+ collectTsFilesToCompile (updatedTsFiles , getClient (), tsFilesToCompile , tsFilesToClosed , false );
382
383
// Compile ts files with tsserver.
383
384
compileTsFiles (tsFilesToCompile , getClient ());
384
385
if (removedTsFiles .size () > 0 ) {
@@ -389,6 +390,10 @@ public void compileWithTsserver(List<IFile> updatedTsFiles, List<IFile> removedT
389
390
throw e ;
390
391
} catch (Exception e ) {
391
392
throw new TypeScriptException (e );
393
+ } finally {
394
+ for (IFile tsFile : tsFilesToClosed ) {
395
+ closeFile (tsFile );
396
+ }
392
397
}
393
398
}
394
399
@@ -402,10 +407,18 @@ public void compileWithTsserver(List<IFile> updatedTsFiles, List<IFile> removedT
402
407
* @throws Exception
403
408
*/
404
409
private void collectTsFilesToCompile (List <IFile > tsFiles , ITypeScriptServiceClient client ,
405
- List <String > tsFilesToCompile , boolean exclude ) throws Exception {
410
+ List <String > tsFilesToCompile , List < IFile > tsFilesToClosed , boolean exclude ) throws Exception {
406
411
for (IFile tsFile : tsFiles ) {
407
412
String filename = WorkbenchResourceUtil .getFileName (tsFile );
408
413
if (!tsFilesToCompile .contains (filename )) {
414
+ // tsserver needs that file must be opened, force the "open"
415
+ // if file is not opened.
416
+ // see
417
+ // https://github.com/angelozerr/typescript.java/issues/142
418
+ if (getOpenedFile (tsFile ) == null ) {
419
+ openFile (tsFile , null );
420
+ tsFilesToClosed .add (tsFile );
421
+ }
409
422
collectTsFilesToCompile (filename , client , tsFilesToCompile , exclude );
410
423
}
411
424
}
0 commit comments