feat(ivy): introduce a flag to control template type-checking for Ivy (#29698)
Template type-checking is enabled by default in the View Engine compiler. The feature in Ivy is not quite ready for this yet, so this flag will temporarily control whether templates are type-checked in ngtsc. The goal is to remove this flag after rolling out template type-checking in google3 in Ivy mode, and making sure the feature is as compatible with the View Engine implementation as possible. Initially, the default value of the flag will leave checking disabled. PR Close #29698
This commit is contained in:
parent
42262e4e8c
commit
d9ce8a4ab5
|
@ -299,6 +299,9 @@ def _ngc_tsconfig(ctx, files, srcs, **kwargs):
|
||||||
"enableSummariesForJit": is_legacy_ngc,
|
"enableSummariesForJit": is_legacy_ngc,
|
||||||
"enableIvy": _enable_ivy_value(ctx),
|
"enableIvy": _enable_ivy_value(ctx),
|
||||||
"fullTemplateTypeCheck": ctx.attr.type_check,
|
"fullTemplateTypeCheck": ctx.attr.type_check,
|
||||||
|
# TODO(alxhub/arick): template type-checking for Ivy needs to be tested in g3 before it can
|
||||||
|
# be enabled here.
|
||||||
|
"ivyTemplateTypeCheck": False,
|
||||||
# In Google3 we still want to use the symbol factory re-exports in order to
|
# In Google3 we still want to use the symbol factory re-exports in order to
|
||||||
# not break existing apps inside Google. Unlike Bazel, Google3 does not only
|
# not break existing apps inside Google. Unlike Bazel, Google3 does not only
|
||||||
# enforce strict dependencies of source files, but also for generated files
|
# enforce strict dependencies of source files, but also for generated files
|
||||||
|
|
|
@ -376,8 +376,9 @@ export class NgtscProgram implements api.Program {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getTemplateDiagnostics(): ReadonlyArray<ts.Diagnostic> {
|
private getTemplateDiagnostics(): ReadonlyArray<ts.Diagnostic> {
|
||||||
// Skip template type-checking unless explicitly requested.
|
// Skip template type-checking if it's disabled.
|
||||||
if (this.options.fullTemplateTypeCheck !== true) {
|
if (this.options.ivyTemplateTypeCheck === false &&
|
||||||
|
this.options.fullTemplateTypeCheck !== true) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,6 +224,17 @@ export interface CompilerOptions extends ts.CompilerOptions {
|
||||||
* Read more about this here: https://github.com/angular/angular/issues/25644.
|
* Read more about this here: https://github.com/angular/angular/issues/25644.
|
||||||
*/
|
*/
|
||||||
createExternalSymbolFactoryReexports?: boolean;
|
createExternalSymbolFactoryReexports?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn on template type-checking in the Ivy compiler.
|
||||||
|
*
|
||||||
|
* This is an internal flag being used to roll out template type-checking in ngtsc. Turning it on
|
||||||
|
* by default before it's ready might break other users attempting to test the new compiler's
|
||||||
|
* behavior.
|
||||||
|
*
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
ivyTemplateTypeCheck?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CompilerHost extends ts.CompilerHost {
|
export interface CompilerHost extends ts.CompilerHost {
|
||||||
|
|
|
@ -76,7 +76,8 @@ export class NgtscTestEnvironment {
|
||||||
"typeRoots": ["node_modules/@types"]
|
"typeRoots": ["node_modules/@types"]
|
||||||
},
|
},
|
||||||
"angularCompilerOptions": {
|
"angularCompilerOptions": {
|
||||||
"enableIvy": true
|
"enableIvy": true,
|
||||||
|
"ivyTemplateTypeCheck": false
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"built"
|
"built"
|
||||||
|
|
Loading…
Reference in New Issue