angular/packages/compiler-cli
Dylan Hunn ec661a3f0b refactor(compiler): Fix ambiguous repeater context variables in template pipeline (#53662)
In #52931, Kristiyan fixed a TemplateDefinitionBuilder bug in which derived alias variables in for loops (`$even`, `$first`, etc) were referring to the wrong level of nested `@for` block. (These variables are unique because they become inlined expressions, and are not "real" context variables.) He fixed this by appending level information to the generated alias name.

Template Pipeline actually suffered from the same bug. We fix it in a very similar way -- in particular, whenever these derived context variables are used, we make them depend on versions of `$index` and `$count` that have been suffixed with the xref of the enclosing repeater.

I have added a few more pipeline goldens, because we are not quite as clever as TDB about only generating the duplicate suffixed index and count variables when inside nested loops. This is fine, since in the long run, we want to refactor it more fundamentally.

I have also added a TODO to fix this more rigorously. In particular, it would be nice if we had proper support for shadowed variables, as well as unlimited levels of variables depending on one another.

PR Close #53662
2024-01-03 11:24:20 -08:00
..
integrationtest refactor: fix a number of typos throughout the codebase (#52249) 2023-10-25 16:51:24 -07:00
linker refactor(compiler): emit signal input info in d.ts and generate partial compilation output (#53521) 2023-12-13 15:44:00 -08:00
ngcc refactor(compiler-cli): add back ngcc as a no-op with a warning (#50045) 2023-04-28 18:18:40 +02:00
private build: remove unneeded babel types postinstall patching (#53441) 2023-12-08 14:33:59 -08:00
src fix(compiler-cli): input transform in local compilation mode (#53645) 2024-01-03 10:29:34 -08:00
test refactor(compiler): Fix ambiguous repeater context variables in template pipeline (#53662) 2024-01-03 11:24:20 -08:00
BUILD.bazel refactor(docs-infra): build adev application using local generated assets (#53511) 2023-12-20 14:49:31 -08:00
esbuild.config.js refactor: remove __ESM_IMPORT_META_URL__ workaround now that we can use ESM (#48521) 2022-12-19 19:50:41 +00:00
index.ts feat(compiler): extract docs via exports (#51828) 2023-09-20 18:34:55 +02:00
package.json feat(core): support TypeScript 5.3 (#52572) 2023-11-09 22:56:41 +00:00
tsconfig-build.json refactor(compiler-cli): dismantle View Engine implementation of ngc (#44269) 2021-12-01 10:36:30 -08:00
tsconfig.json build: update tsconfigs to use ES2020 as target and module (#43431) 2021-10-01 18:28:42 +00:00