22786c8e88
In #33705 we made it so that we generate pure functions for object/array literals in order to avoid having them be shared across elements/views. The problem this introduced is that further down the line the `ContantPool` uses the generated literal in order to figure out whether to share an existing factory or to create a new one. `ConstantPool` determines whether to share a factory by creating a key from the AST node and using it to look it up in the factory cache, however the key generation function didn't handle function invocations and replaced them with `null`. This means that the key for `{foo: pureFunction0(...)}` and `{foo: null}` are the same. These changes rework the logic so that instead of generating a `null` key for function invocations, we generate a variable called `<unknown>` which shouldn't be able to collide with anything. Fixes #35298. PR Close #35481 |
||
---|---|---|
.. | ||
compliance | ||
diagnostics | ||
helpers | ||
metadata | ||
ngtsc | ||
transformers | ||
BUILD.bazel | ||
extract_i18n_spec.ts | ||
mocks.ts | ||
ngc_spec.ts | ||
perform_compile_spec.ts | ||
perform_watch_spec.ts | ||
test_support.ts | ||
typescript_support_spec.ts |