2018-07-27 22:57:44 -07:00
|
|
|
/**
|
|
|
|
|
* @license
|
|
|
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
|
|
|
* found in the LICENSE file at https://angular.io/license
|
|
|
|
|
*/
|
|
|
|
|
|
2018-08-14 16:18:26 -07:00
|
|
|
/// <reference types="node" />
|
|
|
|
|
|
2018-10-16 14:47:08 -07:00
|
|
|
export {FactoryGenerator, FactoryInfo, generatedFactoryTransform} from './src/factory_generator';
|
2019-12-09 16:24:14 -08:00
|
|
|
export {FactoryTracker} from './src/factory_tracker';
|
2018-12-05 16:05:29 -08:00
|
|
|
export {GeneratedShimsHostWrapper, ShimGenerator} from './src/host';
|
2018-10-16 15:07:46 -07:00
|
|
|
export {SummaryGenerator} from './src/summary_generator';
|
perf(ivy): template type-check the entire program in 1 file if possible (#29698)
The template type-checking engine previously would assemble a type-checking
program by inserting Type Check Blocks (TCBs) into existing user files. This
approach proved expensive, as TypeScript has to re-parse and re-type-check
those files when processing the type-checking program.
Instead, a far more performant approach is to augment the program with a
single type-checking file, into which all TCBs are generated. Additionally,
type constructors are also inlined into this file.
This is not always possible - both TCBs and type constructors can sometimes
require inlining into user code, particularly if bound generic type
parameters are present, so the approach taken is actually a hybrid. These
operations are inlined if necessary, but are otherwise generated in a single
file.
It is critically important that the original program also include an empty
version of the type-checking file, otherwise the shape of the two programs
will be different and TypeScript will throw away all the old program
information. This leads to a painfully slow type checking pass, on the same
order as the original program creation. A shim to generate this file in the
original program is therefore added.
Testing strategy: this commit is largely a refactor with no externally
observable behavioral differences, and thus no tests are needed.
PR Close #29698
2019-04-02 11:25:33 -07:00
|
|
|
export {TypeCheckShimGenerator} from './src/typecheck_shim';
|