angular/packages/compiler-cli
JoostK 43050a16de fix(compiler-cli): prevent eliding default imports in incremental recompilations (#41586)
The Angular compiler has to actively keep default import statements
alive if they were only used in type-only positions, but have been
emitted as value expressions for DI purposes. A problem occurred in
incremental recompilations, where the relationship between an identifier
usage and its corresponding default import would not be considered. This
could result in the removal of the default import statement and caused
a `ReferenceError` at runtime.

This commit fixes the issue by storing the association from an
identifier to its default import declaration on the source file itself,
instead of within the `DefaultImportTracker` instance. The
`DefaultImportTracker` instance is only valid for a single compilation,
whereas the association from an identifier to a default import
declaration is valid as long as the `ts.SourceFile` is the same
instance.

A subsequent commit refactor the `DefaultImportTracker` to no longer
be responsible for registering the association, as its lifetime is
conceptually too short to do so.

Fixes #41377

PR Close #41586
2021-04-13 07:37:28 -07:00
..
integrationtest refactor(core): add links to top runtime errors (#40326) 2021-01-19 10:14:56 -08:00
linker refactor(compiler-cli): implement ɵɵngDeclarePipe() (#40803) 2021-02-12 09:00:16 -08:00
ngcc perf(compiler-cli): refactor the performance tracing infrastructure (#41125) 2021-03-24 13:42:26 -07:00
src fix(compiler-cli): prevent eliding default imports in incremental recompilations (#41586) 2021-04-13 07:37:28 -07:00
test fix(compiler-cli): prevent eliding default imports in incremental recompilations (#41586) 2021-04-13 07:37:28 -07:00
BUILD.bazel build: emit performance JSON file for each ng_module() (#41125) 2021-03-24 13:42:26 -07:00
index.ts perf(compiler-cli): refactor the performance tracing infrastructure (#41125) 2021-03-24 13:42:26 -07:00
package.json build: update yargs dependency to 16.2.0. (#41392) 2021-04-01 13:41:26 -07:00
tsconfig-build.json build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
tsconfig.json perf(ivy): ngcc - only find dependencies when targeting a single entry-point (#30525) 2019-07-09 09:40:46 -07:00