feat(compiler): reuse the TypeScript typecheck for template typechecking. (#19152)

This speeds up the compilation process significantly.

Also introduces a new option `fullTemplateTypeCheck` to do more checks in templates:
- check expressions inside of templatized content (e.g. inside of `<div *ngIf>`).
- check the arguments of calls to the `transform` function of pipes
- check references to directives that were exposed as variables via `exportAs`
PR Close #19152
This commit is contained in:
Tobias Bosch
2017-09-11 15:18:19 -07:00
committed by Matias Niemelä
parent 554fe65690
commit 996c7c2dde
22 changed files with 712 additions and 401 deletions

View File

@ -34,12 +34,13 @@ export class CompilerImpl implements Compiler {
private _delegate: JitCompiler;
constructor(
private _injector: Injector, private _metadataResolver: CompileMetadataResolver,
templateParser: TemplateParser, styleCompiler: StyleCompiler, viewCompiler: ViewCompiler,
ngModuleCompiler: NgModuleCompiler, summaryResolver: SummaryResolver<Type<any>>,
compileReflector: CompileReflector, compilerConfig: CompilerConfig, console: Console) {
htmlParser: HtmlParser, templateParser: TemplateParser, styleCompiler: StyleCompiler,
viewCompiler: ViewCompiler, ngModuleCompiler: NgModuleCompiler,
summaryResolver: SummaryResolver<Type<any>>, compileReflector: CompileReflector,
compilerConfig: CompilerConfig, console: Console) {
this._delegate = new JitCompiler(
_metadataResolver, templateParser, styleCompiler, viewCompiler, ngModuleCompiler,
summaryResolver, compileReflector, compilerConfig, console,
_metadataResolver, htmlParser, templateParser, styleCompiler, viewCompiler,
ngModuleCompiler, summaryResolver, compileReflector, compilerConfig, console,
this.getExtraNgModuleProviders.bind(this));
}
@ -141,7 +142,7 @@ export const COMPILER_PROVIDERS = <StaticProvider[]>[
{ provide: NgModuleCompiler, deps: [CompileReflector] },
{ provide: CompilerConfig, useValue: new CompilerConfig()},
{ provide: Compiler, useClass: CompilerImpl, deps: [Injector, CompileMetadataResolver,
TemplateParser, StyleCompiler,
HtmlParser, TemplateParser, StyleCompiler,
ViewCompiler, NgModuleCompiler,
SummaryResolver, CompileReflector, CompilerConfig,
Console]},