@@ -355,9 +355,86 @@ module ts {
355
355
var reportedDeclarationError = false ;
356
356
357
357
var emitJsDocComments = compilerOptions . removeComments ? function ( declaration : Node ) { } : writeJsDocComments ;
358
+ var emit = compilerOptions . stripInternal ? stripInternal : emitNode ;
358
359
359
360
var aliasDeclarationEmitInfo : AliasDeclarationEmitInfo [ ] = [ ] ;
360
361
362
+ // Contains the reference paths that needs to go in the declaration file.
363
+ // Collecting this separately because reference paths need to be first thing in the declaration file
364
+ // and we could be collecting these paths from multiple files into single one with --out option
365
+ var referencePathsOutput = "" ;
366
+
367
+ if ( root ) {
368
+ // Emitting just a single file, so emit references in this file only
369
+ if ( ! compilerOptions . noResolve ) {
370
+ var addedGlobalFileReference = false ;
371
+ forEach ( root . referencedFiles , fileReference => {
372
+ var referencedFile = tryResolveScriptReference ( host , root , fileReference ) ;
373
+
374
+ // All the references that are not going to be part of same file
375
+ if ( referencedFile && ( ( referencedFile . flags & NodeFlags . DeclarationFile ) || // This is a declare file reference
376
+ shouldEmitToOwnFile ( referencedFile , compilerOptions ) || // This is referenced file is emitting its own js file
377
+ ! addedGlobalFileReference ) ) { // Or the global out file corresponding to this reference was not added
378
+
379
+ writeReferencePath ( referencedFile ) ;
380
+ if ( ! isExternalModuleOrDeclarationFile ( referencedFile ) ) {
381
+ addedGlobalFileReference = true ;
382
+ }
383
+ }
384
+ } ) ;
385
+ }
386
+
387
+ emitSourceFile ( root ) ;
388
+ }
389
+ else {
390
+ // Emit references corresponding to this file
391
+ var emittedReferencedFiles : SourceFile [ ] = [ ] ;
392
+ forEach ( host . getSourceFiles ( ) , sourceFile => {
393
+ if ( ! isExternalModuleOrDeclarationFile ( sourceFile ) ) {
394
+ // Check what references need to be added
395
+ if ( ! compilerOptions . noResolve ) {
396
+ forEach ( sourceFile . referencedFiles , fileReference => {
397
+ var referencedFile = tryResolveScriptReference ( host , sourceFile , fileReference ) ;
398
+
399
+ // If the reference file is a declaration file or an external module, emit that reference
400
+ if ( referencedFile && ( isExternalModuleOrDeclarationFile ( referencedFile ) &&
401
+ ! contains ( emittedReferencedFiles , referencedFile ) ) ) { // If the file reference was not already emitted
402
+
403
+ writeReferencePath ( referencedFile ) ;
404
+ emittedReferencedFiles . push ( referencedFile ) ;
405
+ }
406
+ } ) ;
407
+ }
408
+
409
+ emitSourceFile ( sourceFile ) ;
410
+ }
411
+ } ) ;
412
+ }
413
+
414
+ return {
415
+ reportedDeclarationError,
416
+ aliasDeclarationEmitInfo,
417
+ synchronousDeclarationOutput : writer . getText ( ) ,
418
+ referencePathsOutput,
419
+ }
420
+
421
+ function hasInternalAnnotation ( range : CommentRange ) {
422
+ var text = currentSourceFile . text ;
423
+ var comment = text . substring ( range . pos , range . end ) ;
424
+ return comment . indexOf ( "@internal" ) >= 0 ;
425
+ }
426
+
427
+ function stripInternal ( node : Node ) {
428
+ if ( node ) {
429
+ var leadingCommentRanges = getLeadingCommentRanges ( currentSourceFile . text , node . pos ) ;
430
+ if ( forEach ( leadingCommentRanges , hasInternalAnnotation ) ) {
431
+ return ;
432
+ }
433
+
434
+ emitNode ( node ) ;
435
+ }
436
+ }
437
+
361
438
function createAndSetNewTextWriterWithSymbolWriter ( ) : EmitTextWriterWithSymbolWriter {
362
439
var writer = < EmitTextWriterWithSymbolWriter > createTextWriter ( newLine ) ;
363
440
writer . trackSymbol = trackSymbol ;
@@ -463,7 +540,7 @@ module ts {
463
540
464
541
function emitLines ( nodes : Node [ ] ) {
465
542
for ( var i = 0 , n = nodes . length ; i < n ; i ++ ) {
466
- emitNode ( nodes [ i ] ) ;
543
+ emit ( nodes [ i ] ) ;
467
544
}
468
545
}
469
546
@@ -1402,10 +1479,6 @@ module ts {
1402
1479
}
1403
1480
}
1404
1481
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
1482
function writeReferencePath ( referencedFile : SourceFile ) {
1410
1483
var declFileName = referencedFile . flags & NodeFlags . DeclarationFile
1411
1484
? referencedFile . filename // Declaration file, use declaration file name
@@ -1422,60 +1495,6 @@ module ts {
1422
1495
1423
1496
referencePathsOutput += "/// <reference path=\"" + declFileName + "\" />" + newLine ;
1424
1497
}
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
1498
}
1480
1499
1481
1500
export function getDeclarationDiagnostics ( host : EmitHost , resolver : EmitResolver , targetSourceFile : SourceFile ) : Diagnostic [ ] {
0 commit comments