fix(ngcc): do not emit ES2015 code in ES5 files (#33514)
Previously, ngcc's `Renderer` would add some constants in the processed files which were emitted as ES2015 code (e.g. `const` declarations). This would result in invalid ES5 generated code that would break when run on browsers that do not support the emitted format. This commit fixes it by adding a `printStatement()` method to `RenderingFormatter`, which can convert statements to JavaScript code in a suitable format for the corresponding `RenderingFormatter`. Additionally, the `translateExpression()` and `translateStatement()` ngtsc helper methods are augmented to accept an extra hint to know whether the code needs to be translated to ES5 format or not. Fixes #32665 PR Close #33514
This commit is contained in:

committed by
Kara Erickson

parent
21bd8c9a2e
commit
06e36e5972
@ -53,6 +53,7 @@ class TestRenderingFormatter implements RenderingFormatter {
|
||||
importManager: ImportManager): void {
|
||||
output.prepend('\n// ADD MODUlE WITH PROVIDERS PARAMS\n');
|
||||
}
|
||||
printStatement(): string { return 'IGNORED'; }
|
||||
}
|
||||
|
||||
function createTestRenderer(
|
||||
@ -87,6 +88,7 @@ function createTestRenderer(
|
||||
spyOn(testFormatter, 'removeDecorators').and.callThrough();
|
||||
spyOn(testFormatter, 'rewriteSwitchableDeclarations').and.callThrough();
|
||||
spyOn(testFormatter, 'addModuleWithProvidersParams').and.callThrough();
|
||||
spyOn(testFormatter, 'printStatement').and.callThrough();
|
||||
|
||||
const renderer = new DtsRenderer(testFormatter, fs, logger, host, bundle);
|
||||
|
||||
|
Reference in New Issue
Block a user