angular/packages/compiler-cli/src/ngtsc
JoostK 71238a95d9 fix(ivy): ensure module scope is rebuild on dependent change (#33522)
During incremental compilations, ngtsc needs to know which metadata
from a previous compilation can be reused, versus which metadata has to
be recomputed as some dependency was updated. Changes to
directives/components should cause the NgModule in which they are
declared to be recompiled, as the NgModule's compilation is dependent
on its directives/components.

When a dependent source file of a directive/component is updated,
however, a more subtle dependency should also cause to NgModule's source
file to be invalidated. During the reconciliation of state from a
previous compilation into the new program, the component's source file
is invalidated because one of its dependency has changed, ergo the
NgModule needs to be invalidated as well. Up until now, this implicit
dependency was not imposed on the NgModule. Additionally, any change to
a dependent file may influence the module scope to change, so all
components within the module must be invalidated as well.

This commit fixes the bug by introducing additional file dependencies,
as to ensure a proper rebuild of the module scope and its components.

Fixes #32416

PR Close #33522
2019-11-12 13:56:31 -08:00
..
annotations refactor(ivy): split type into type, internalType and adjacentType (#33533) 2019-11-05 17:25:01 +00:00
cycles refactor(ivy): implement a virtual file-system layer in ngtsc + ngcc (#30921) 2019-06-25 16:25:24 -07:00
diagnostics fix(ivy): don't crash on unknown pipe (#33454) 2019-10-31 23:43:32 +00:00
entry_point refactor(ivy): implement a virtual file-system layer in ngtsc + ngcc (#30921) 2019-06-25 16:25:24 -07:00
file_system refactor(compiler-cli): remove unused method FileSystem#mkdir() (#33237) 2019-10-21 11:26:57 -04:00
imports feat(ivy): enable re-export of the compilation scope of NgModules privately (#33177) 2019-10-22 13:14:31 -04:00
incremental fix(ivy): ensure module scope is rebuild on dependent change (#33522) 2019-11-12 13:56:31 -08:00
indexer fix(ivy): support abstract directives in template type checking (#33131) 2019-10-24 12:44:30 -07:00
metadata fix(ivy): support abstract directives in template type checking (#33131) 2019-10-24 12:44:30 -07:00
partial_evaluator fix(ngcc): handle new __spreadArrays tslib helper (#33617) 2019-11-06 19:43:07 +00:00
perf refactor(ivy): implement a virtual file-system layer in ngtsc + ngcc (#30921) 2019-06-25 16:25:24 -07:00
reflection fix(ngcc): handle new __spreadArrays tslib helper (#33617) 2019-11-06 19:43:07 +00:00
routing build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
scope fix(ivy): support abstract directives in template type checking (#33131) 2019-10-24 12:44:30 -07:00
shims fix(compiler-cli): Pass SourceFile to getFullText() (#33660) 2019-11-07 16:47:08 -08:00
switch build: rules_nodejs 0.26.0 & use @npm instead of @ngdeps now that downstream angular build uses angular bundles (#28871) 2019-02-28 12:06:36 -08:00
testing refactor(ivy): implement a virtual file-system layer in ngtsc + ngcc (#30921) 2019-06-25 16:25:24 -07:00
transform fix(ivy): ensure module scope is rebuild on dependent change (#33522) 2019-11-12 13:56:31 -08:00
translator fix(ivy): i18n - support colons in $localize metadata (#32867) 2019-10-02 14:52:00 -07:00
typecheck fix(ivy): avoid implicit any errors in event handlers (#33550) 2019-11-06 19:45:45 +00:00
util feat: typescript 3.6 support (#32946) 2019-10-18 13:15:16 -04:00
program.ts refactor(ivy): remove ngBaseDef (#33264) 2019-10-25 13:11:34 -07:00
resource_loader.ts fix(ivy): handle rooted resource paths correctly (#31511) 2019-07-11 11:42:33 -04:00
synthetic_files_compiler_host.ts feat: add support for TypeScript 3.3 (and drop older versions) (#29004) 2019-03-13 10:38:37 -07:00
tsc_plugin.ts refactor(ivy): use ClassDeclaration in more ReflectionHost methods (#29209) 2019-03-21 22:20:23 +00:00