@@ -358,6 +358,65 @@ module ts {
358
358
359
359
var aliasDeclarationEmitInfo : AliasDeclarationEmitInfo [ ] = [ ] ;
360
360
361
+ // Contains the reference paths that needs to go in the declaration file.
362
+ // Collecting this separately because reference paths need to be first thing in the declaration file
363
+ // and we could be collecting these paths from multiple files into single one with --out option
364
+ var referencePathsOutput = "" ;
365
+
366
+ if ( root ) {
367
+ // Emitting just a single file, so emit references in this file only
368
+ if ( ! compilerOptions . noResolve ) {
369
+ var addedGlobalFileReference = false ;
370
+ forEach ( root . referencedFiles , fileReference => {
371
+ var referencedFile = tryResolveScriptReference ( host , root , fileReference ) ;
372
+
373
+ // All the references that are not going to be part of same file
374
+ if ( referencedFile && ( ( referencedFile . flags & NodeFlags . DeclarationFile ) || // This is a declare file reference
375
+ shouldEmitToOwnFile ( referencedFile , compilerOptions ) || // This is referenced file is emitting its own js file
376
+ ! addedGlobalFileReference ) ) { // Or the global out file corresponding to this reference was not added
377
+
378
+ writeReferencePath ( referencedFile ) ;
379
+ if ( ! isExternalModuleOrDeclarationFile ( referencedFile ) ) {
380
+ addedGlobalFileReference = true ;
381
+ }
382
+ }
383
+ } ) ;
384
+ }
385
+
386
+ emitNode ( root ) ;
387
+ }
388
+ else {
389
+ // Emit references corresponding to this file
390
+ var emittedReferencedFiles : SourceFile [ ] = [ ] ;
391
+ forEach ( host . getSourceFiles ( ) , sourceFile => {
392
+ if ( ! isExternalModuleOrDeclarationFile ( sourceFile ) ) {
393
+ // Check what references need to be added
394
+ if ( ! compilerOptions . noResolve ) {
395
+ forEach ( sourceFile . referencedFiles , fileReference => {
396
+ var referencedFile = tryResolveScriptReference ( host , sourceFile , fileReference ) ;
397
+
398
+ // If the reference file is a declaration file or an external module, emit that reference
399
+ if ( referencedFile && ( isExternalModuleOrDeclarationFile ( referencedFile ) &&
400
+ ! contains ( emittedReferencedFiles , referencedFile ) ) ) { // If the file reference was not already emitted
401
+
402
+ writeReferencePath ( referencedFile ) ;
403
+ emittedReferencedFiles . push ( referencedFile ) ;
404
+ }
405
+ } ) ;
406
+ }
407
+
408
+ emitNode ( sourceFile ) ;
409
+ }
410
+ } ) ;
411
+ }
412
+
413
+ return {
414
+ reportedDeclarationError,
415
+ aliasDeclarationEmitInfo,
416
+ synchronousDeclarationOutput : writer . getText ( ) ,
417
+ referencePathsOutput,
418
+ }
419
+
361
420
function createAndSetNewTextWriterWithSymbolWriter ( ) : EmitTextWriterWithSymbolWriter {
362
421
var writer = < EmitTextWriterWithSymbolWriter > createTextWriter ( newLine ) ;
363
422
writer . trackSymbol = trackSymbol ;
@@ -1402,10 +1461,6 @@ module ts {
1402
1461
}
1403
1462
}
1404
1463
1405
- // Contains the reference paths that needs to go in the declaration file.
1406
- // Collecting this separately because reference paths need to be first thing in the declaration file
1407
- // and we could be collecting these paths from multiple files into single one with --out option
1408
- var referencePathsOutput = "" ;
1409
1464
function writeReferencePath ( referencedFile : SourceFile ) {
1410
1465
var declFileName = referencedFile . flags & NodeFlags . DeclarationFile
1411
1466
? referencedFile . filename // Declaration file, use declaration file name
@@ -1422,60 +1477,6 @@ module ts {
1422
1477
1423
1478
referencePathsOutput += "/// <reference path=\"" + declFileName + "\" />" + newLine ;
1424
1479
}
1425
-
1426
- if ( root ) {
1427
- // Emitting just a single file, so emit references in this file only
1428
- if ( ! compilerOptions . noResolve ) {
1429
- var addedGlobalFileReference = false ;
1430
- forEach ( root . referencedFiles , fileReference => {
1431
- var referencedFile = tryResolveScriptReference ( host , root , fileReference ) ;
1432
-
1433
- // All the references that are not going to be part of same file
1434
- if ( referencedFile && ( ( referencedFile . flags & NodeFlags . DeclarationFile ) || // This is a declare file reference
1435
- shouldEmitToOwnFile ( referencedFile , compilerOptions ) || // This is referenced file is emitting its own js file
1436
- ! addedGlobalFileReference ) ) { // Or the global out file corresponding to this reference was not added
1437
-
1438
- writeReferencePath ( referencedFile ) ;
1439
- if ( ! isExternalModuleOrDeclarationFile ( referencedFile ) ) {
1440
- addedGlobalFileReference = true ;
1441
- }
1442
- }
1443
- } ) ;
1444
- }
1445
-
1446
- emitNode ( root ) ;
1447
- }
1448
- else {
1449
- // Emit references corresponding to this file
1450
- var emittedReferencedFiles : SourceFile [ ] = [ ] ;
1451
- forEach ( host . getSourceFiles ( ) , sourceFile => {
1452
- if ( ! isExternalModuleOrDeclarationFile ( sourceFile ) ) {
1453
- // Check what references need to be added
1454
- if ( ! compilerOptions . noResolve ) {
1455
- forEach ( sourceFile . referencedFiles , fileReference => {
1456
- var referencedFile = tryResolveScriptReference ( host , sourceFile , fileReference ) ;
1457
-
1458
- // If the reference file is a declaration file or an external module, emit that reference
1459
- if ( referencedFile && ( isExternalModuleOrDeclarationFile ( referencedFile ) &&
1460
- ! contains ( emittedReferencedFiles , referencedFile ) ) ) { // If the file reference was not already emitted
1461
-
1462
- writeReferencePath ( referencedFile ) ;
1463
- emittedReferencedFiles . push ( referencedFile ) ;
1464
- }
1465
- } ) ;
1466
- }
1467
-
1468
- emitNode ( sourceFile ) ;
1469
- }
1470
- } ) ;
1471
- }
1472
-
1473
- return {
1474
- reportedDeclarationError,
1475
- aliasDeclarationEmitInfo,
1476
- synchronousDeclarationOutput : writer . getText ( ) ,
1477
- referencePathsOutput,
1478
- }
1479
1480
}
1480
1481
1481
1482
export function getDeclarationDiagnostics ( host : EmitHost , resolver : EmitResolver , targetSourceFile : SourceFile ) : Diagnostic [ ] {
0 commit comments