angular/packages/compiler-cli/src
JoostK 9470f56ad3 fix(compiler-cli): handle directives that refer to a namespaced class in a type parameter bound (#43511)
The template type-checker has to emit type constructors for the
directives that are used in a template, where a type constructor's
declaration has to mirror the type parameter constraints as they were
originally declared. Therefore, the compiler analyzes whether a type
parameter constraint can be recreated, e.g. by generating imports for
any type references. Some type references cannot be recreated, in which
case the compiler has to fall back to a strategy where the type
constructor is created inline in the original source file (which comes
with a performance penalty).

There used to be an issue for type references to namespaced declarations.
The compiler is unable to emit such references such that an inline
type constructor should be used as fallback, but this did not happen.
This caused the attempt to emit the type reference to fail, as the
namespaced declaration cannot be located by the reference emitters.

This commit fixes the issue by using a stricter check to determine if a
type parameter requires an inline type constructor. The TypeScript
reflection host's `isStaticallyExported` logic was expanded to work for
any declaration instead of just classes, as e.g. type declarations can
also be referenced in a type parameter constraint.

Closes #43383

PR Close #43511
2021-09-20 19:56:31 +00:00
..
diagnostics build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
metadata feat(compiler): support nullish coalescing in templates (#41437) 2021-04-07 12:04:28 -07:00
ngtsc fix(compiler-cli): handle directives that refer to a namespaced class in a type parameter bound (#43511) 2021-09-20 19:56:31 +00:00
transformers fix(compiler-cli): Emit type annotations for synthesized decorator fields (#43021) 2021-08-25 15:05:28 -07:00
extract_i18n.ts refactor(compiler): add process title to Angular node binaries (#40648) 2021-02-17 17:06:27 -08:00
language_services.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
main.ts refactor(compiler): add process title to Angular node binaries (#40648) 2021-02-17 17:06:27 -08:00
perform_compile.ts fix(compiler-cli): fix extending angularCompilerOptions from non relative extension less TypeScript configuration files (#41349) 2021-04-07 09:37:44 -07:00
perform_watch.ts build: support building with TypeScript 4.1 (#39571) 2020-11-25 11:10:01 -08:00
tooling.ts refactor(compiler-cli): skip class decorators in tooling constructor parameters transform (#37545) 2020-06-15 12:47:57 -07:00
typescript_support.ts feat(core): support TypeScript 4.3 (#42022) 2021-06-04 11:17:09 -07:00
version.ts docs: fix package name in version.ts files in different packages (#41208) 2021-05-10 10:26:34 -04:00