7f1651574e
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 #41557