@@ -15,7 +15,7 @@ import * as ts from 'typescript';
15
15
import { TypeCheckHost , translateDiagnostics } from '../diagnostics/translate_diagnostics' ;
16
16
import { MetadataCollector , ModuleMetadata , createBundleIndexHost } from '../metadata/index' ;
17
17
18
- import { CompilerHost , CompilerOptions , CustomTransformers , DEFAULT_ERROR_CODE , Diagnostic , DiagnosticMessageChain , EmitFlags , LazyRoute , LibrarySummary , Program , SOURCE , TsEmitArguments , TsEmitCallback } from './api' ;
18
+ import { CompilerHost , CompilerOptions , CustomTransformers , DEFAULT_ERROR_CODE , Diagnostic , DiagnosticMessageChain , EmitFlags , LazyRoute , LibrarySummary , Program , SOURCE , TsEmitArguments , TsEmitCallback , TsMergeEmitResultsCallback } from './api' ;
19
19
import { CodeGenerator , TsCompilerAotCompilerTypeCheckHostAdapter , getOriginalReferences } from './compiler_host' ;
20
20
import { InlineResourcesMetadataTransformer , getInlineResourcesTransformFactory } from './inline_resources' ;
21
21
import { LowerMetadataTransform , getExpressionLoweringTransformFactory } from './lower_expressions' ;
@@ -270,7 +270,8 @@ class AngularCompilerProgram implements Program {
270
270
emitFlags ?: EmitFlags ,
271
271
cancellationToken ?: ts . CancellationToken ,
272
272
customTransformers ?: CustomTransformers ,
273
- emitCallback ?: TsEmitCallback
273
+ emitCallback ?: TsEmitCallback ,
274
+ mergeEmitResultsCallback ?: TsMergeEmitResultsCallback ,
274
275
} = { } ) : ts . EmitResult {
275
276
return this . options . enableIvy === true ? this . _emitRender3 ( parameters ) :
276
277
this . _emitRender2 ( parameters ) ;
@@ -281,12 +282,15 @@ class AngularCompilerProgram implements Program {
281
282
}
282
283
283
284
private _emitRender3 (
284
- { emitFlags = EmitFlags . Default , cancellationToken, customTransformers,
285
- emitCallback = defaultEmitCallback } : {
285
+ {
286
+ emitFlags = EmitFlags . Default , cancellationToken, customTransformers,
287
+ emitCallback = defaultEmitCallback , mergeEmitResultsCallback = mergeEmitResults ,
288
+ } : {
286
289
emitFlags ?: EmitFlags ,
287
290
cancellationToken ?: ts . CancellationToken ,
288
291
customTransformers ?: CustomTransformers ,
289
- emitCallback ?: TsEmitCallback
292
+ emitCallback ?: TsEmitCallback ,
293
+ mergeEmitResultsCallback ?: TsMergeEmitResultsCallback ,
290
294
} = { } ) : ts . EmitResult {
291
295
const emitStart = Date . now ( ) ;
292
296
if ( ( emitFlags & ( EmitFlags . JS | EmitFlags . DTS | EmitFlags . Metadata | EmitFlags . Codegen ) ) ===
@@ -328,12 +332,15 @@ class AngularCompilerProgram implements Program {
328
332
}
329
333
330
334
private _emitRender2 (
331
- { emitFlags = EmitFlags . Default , cancellationToken, customTransformers,
332
- emitCallback = defaultEmitCallback } : {
335
+ {
336
+ emitFlags = EmitFlags . Default , cancellationToken, customTransformers,
337
+ emitCallback = defaultEmitCallback , mergeEmitResultsCallback = mergeEmitResults ,
338
+ } : {
333
339
emitFlags ?: EmitFlags ,
334
340
cancellationToken ?: ts . CancellationToken ,
335
341
customTransformers ?: CustomTransformers ,
336
- emitCallback ?: TsEmitCallback
342
+ emitCallback ?: TsEmitCallback ,
343
+ mergeEmitResultsCallback ?: TsMergeEmitResultsCallback ,
337
344
} = { } ) : ts . EmitResult {
338
345
const emitStart = Date . now ( ) ;
339
346
if ( emitFlags & EmitFlags . I18nBundle ) {
@@ -416,7 +423,7 @@ class AngularCompilerProgram implements Program {
416
423
( sourceFilesToEmit . length + genTsFiles . length ) < MAX_FILE_COUNT_FOR_SINGLE_FILE_EMIT ) {
417
424
const fileNamesToEmit =
418
425
[ ...sourceFilesToEmit . map ( sf => sf . fileName ) , ...genTsFiles . map ( gf => gf . genFileUrl ) ] ;
419
- emitResult = mergeEmitResults (
426
+ emitResult = mergeEmitResultsCallback (
420
427
fileNamesToEmit . map ( ( fileName ) => emitResult = emitCallback ( {
421
428
program : this . tsProgram ,
422
429
host : this . host ,
@@ -777,11 +784,12 @@ class AngularCompilerProgram implements Program {
777
784
private getSourceFilesForEmit ( ) : ts . SourceFile [ ] | undefined {
778
785
// TODO(tbosch): if one of the files contains a `const enum`
779
786
// always emit all files -> return undefined!
780
- let sourceFilesToEmit : ts . SourceFile [ ] | undefined ;
787
+ let sourceFilesToEmit = this . tsProgram . getSourceFiles ( ) . filter (
788
+ sf => { return ! sf . isDeclarationFile && ! GENERATED_FILES . test ( sf . fileName ) ; } ) ;
781
789
if ( this . oldProgramEmittedSourceFiles ) {
782
- sourceFilesToEmit = this . tsProgram . getSourceFiles ( ) . filter ( sf => {
790
+ sourceFilesToEmit = sourceFilesToEmit . filter ( sf => {
783
791
const oldFile = this . oldProgramEmittedSourceFiles ! . get ( sf . fileName ) ;
784
- return ! sf . isDeclarationFile && ! GENERATED_FILES . test ( sf . fileName ) && sf !== oldFile ;
792
+ return sf !== oldFile ;
785
793
} ) ;
786
794
}
787
795
return sourceFilesToEmit ;
@@ -1020,7 +1028,7 @@ function mergeEmitResults(emitResults: ts.EmitResult[]): ts.EmitResult {
1020
1028
for ( const er of emitResults ) {
1021
1029
diagnostics . push ( ...er . diagnostics ) ;
1022
1030
emitSkipped = emitSkipped || er . emitSkipped ;
1023
- emittedFiles . push ( ...er . emittedFiles ) ;
1031
+ emittedFiles . push ( ...( er . emittedFiles || [ ] ) ) ;
1024
1032
}
1025
1033
return { diagnostics, emitSkipped, emittedFiles} ;
1026
1034
}
0 commit comments