angular/packages/compiler-cli/ngcc/test
Miško Hevery 2961bf06c6 refactor(ivy): move hostVars/hostAttrs from instruction to DirectiveDef (#34683)
This change moves information from instructions to declarative position:
- `ɵɵallocHostVars(vars)` => `DirectiveDef.hostVars`
- `ɵɵelementHostAttrs(attrs)` => `DirectiveDef.hostAttrs`

When merging directives it is necessary to know about `hostVars` and `hostAttrs`. Before this change the information was stored in the `hostBindings` function. This was problematic, because in order to get to the information the `hostBindings` would have to be executed. In order for `hostBindings` to be executed the directives would have to be instantiated. This means that the directive instantiation would happen before we had knowledge about the `hostAttrs` and as a result the directive could observe in the constructor that not all of the `hostAttrs` have been applied. This further complicates the runtime as we have to apply `hostAttrs` in parts over many invocations.

`ɵɵallocHostVars` was unnecessarily complicated because it would have to update the `LView` (and Blueprint) while existing directives are already executing. By moving it out of `hostBindings` function we can access it statically and we can create correct `LView` (and Blueprint) in a single pass.

This change only changes how the instructions are generated, but does not change the runtime much. (We cheat by emulating the old behavior by calling `ɵɵallocHostVars` and `ɵɵelementHostAttrs`) Subsequent change will refactor the runtime to take advantage of the static information.

PR Close #34683
2020-01-24 12:22:10 -08:00
..
analysis fix(ngcc): do not attempt compilation when analysis fails (#34889) 2020-01-23 14:47:03 -08:00
dependencies test(ngcc): update dependency host test description (#34695) 2020-01-15 10:24:50 -08:00
entry_point_finder fix(ngcc): avoid error due to circular dependency in EsmDependencyHost (#34512) 2020-01-08 15:00:50 -08:00
execution fix(ngcc): update package.json deterministically (#34870) 2020-01-23 10:16:35 -08:00
helpers feat(ngcc): lock ngcc when processing (#34722) 2020-01-22 15:35:34 -08:00
host fix(ngcc): do not collect private declarations from external packages (#34811) 2020-01-23 13:58:37 -08:00
integration refactor(ivy): move hostVars/hostAttrs from instruction to DirectiveDef (#34683) 2020-01-24 12:22:10 -08:00
logging feat(compiler-cli): ngcc - make logging more configurable (#29591) 2019-04-01 11:53:28 -07:00
migrations feat(ivy): error in ivy when inheriting a ctor from an undecorated base (#34460) 2019-12-18 15:04:49 -08:00
packages test(ngcc): cleanup entry-point bundle testcases (#34415) 2019-12-16 07:45:36 -08:00
rendering test(ngcc): remove usage of ES2015 syntax in ES5/UMD/CommonJS tests (#34889) 2020-01-23 14:47:03 -08:00
writing fix(ngcc): update package.json deterministically (#34870) 2020-01-23 10:16:35 -08:00
BUILD.bazel test: handle bootstrap templated_args in jasmine_node_test defaults.bzl (#34736) 2020-01-15 14:58:07 -05:00
utils_spec.ts refactor(ngcc): use a special map for memoizing expensive-to-compute values (#34512) 2020-01-08 15:00:50 -08:00