Skip to content

Commit

Permalink
fix(compiler-cli): don't report emit diagnostics when --noEmitOnError…
Browse files Browse the repository at this point in the history
… is off
  • Loading branch information
alexeagle committed Oct 31, 2017
1 parent 3a86654 commit 5d7dede
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 4 deletions.
2 changes: 2 additions & 0 deletions packages/compiler-cli/index.ts
Expand Up @@ -22,3 +22,5 @@ export * from './src/perform_compile';
// and usages in G3 are changed to `CompilerOptions`.
export {CompilerOptions as AngularCompilerOptions} from './src/transformers/api';
export {NgTools_InternalApi_NG_2 as __NGTOOLS_PRIVATE_API_2} from './src/ngtools_api';

export {ngToTsDiagnostic} from './src/transformers/util';
14 changes: 10 additions & 4 deletions packages/compiler-cli/src/transformers/program.ts
Expand Up @@ -300,10 +300,16 @@ class AngularCompilerProgram implements Program {
}
}
this.emittedSourceFiles = emittedSourceFiles;
// translate the diagnostics in the emitResult as well.
const translatedEmitDiags = translateDiagnostics(this.hostAdapter, emitResult.diagnostics);
emitResult.diagnostics = translatedEmitDiags.ts.concat(
this.structuralDiagnostics.concat(translatedEmitDiags.ng).map(ngToTsDiagnostic));

// Match behavior of tsc: only produce emit diagnostics if it would block
// emit. If noEmitOnError is false, the emit will happen in spite of any
// errors, so we should not report them.
if (this.options.noEmitOnError === true) {
// translate the diagnostics in the emitResult as well.
const translatedEmitDiags = translateDiagnostics(this.hostAdapter, emitResult.diagnostics);
emitResult.diagnostics = translatedEmitDiags.ts.concat(
this.structuralDiagnostics.concat(translatedEmitDiags.ng).map(ngToTsDiagnostic));
}

if (!outSrcMapping.length) {
// if no files were emitted by TypeScript, also don't emit .json files
Expand Down
13 changes: 13 additions & 0 deletions packages/compiler-cli/test/transformers/program_spec.ts
Expand Up @@ -893,6 +893,19 @@ describe('ng program', () => {
`src/main.html(1,1): error TS100: Property 'nonExistent' does not exist on type 'MyComp'.`);
});

it('should not report emit errors with noEmitOnError=false', () => {
testSupport.writeFiles({
'src/main.ts': `
@NgModule()
`
});
const options = testSupport.createCompilerOptions({noEmitOnError: false});
const host = ng.createCompilerHost({options});
const program1 = ng.createProgram(
{rootNames: [path.resolve(testSupport.basePath, 'src/main.ts')], options, host});
expect(program1.emit().diagnostics.length).toBe(0);
});

describe('errors', () => {
const fileWithStructuralError = `
import {NgModule} from '@angular/core';
Expand Down

0 comments on commit 5d7dede

Please sign in to comment.