feat(compiler-cli): make enableIvy ngtsc/true equivalent (#28616)
Currently setting `enableIvy` to true runs a hybrid mode of `ngc` and `ngtsc`. This is counterintuitive given the name of the flag itself. This PR makes the `true` value equivalent to the previous `ngtsc`, and `ngtsc` becomes an alias for `true`. Effectively this removes the hybrid mode as well since there's no other way to enable it. PR Close #28616
This commit is contained in:
@ -54,8 +54,7 @@ export function mainDiagnosticsForTest(
|
||||
}
|
||||
|
||||
function createEmitCallback(options: api.CompilerOptions): api.TsEmitCallback|undefined {
|
||||
const transformDecorators = options.enableIvy !== 'ngtsc' && options.enableIvy !== 'tsc' &&
|
||||
options.annotationsAs !== 'decorators';
|
||||
const transformDecorators = !options.enableIvy && options.annotationsAs !== 'decorators';
|
||||
const transformTypesToClosure = options.annotateForClosureCompiler;
|
||||
if (!transformDecorators && !transformTypesToClosure) {
|
||||
return undefined;
|
||||
@ -192,7 +191,7 @@ function reportErrorsAndExit(
|
||||
const errorsAndWarnings = filterErrorsAndWarnings(allDiagnostics);
|
||||
if (errorsAndWarnings.length) {
|
||||
const formatHost = getFormatDiagnosticsHost(options);
|
||||
if (options && (options.enableIvy === true || options.enableIvy === 'ngtsc')) {
|
||||
if (options && options.enableIvy === true) {
|
||||
const ngDiagnostics = errorsAndWarnings.filter(api.isNgDiagnostic);
|
||||
const tsDiagnostics = errorsAndWarnings.filter(api.isTsDiagnostic);
|
||||
consoleError(replaceTsWithNgInErrors(
|
||||
|
@ -120,6 +120,10 @@ export function calcProjectFileAndBasePath(project: string):
|
||||
|
||||
export function createNgCompilerOptions(
|
||||
basePath: string, config: any, tsOptions: ts.CompilerOptions): api.CompilerOptions {
|
||||
// enableIvy `ngtsc` is an alias for `true`.
|
||||
if (config.angularCompilerOptions && config.angularCompilerOptions.enableIvy === 'ngtsc') {
|
||||
config.angularCompilerOptions.enableIvy = true;
|
||||
}
|
||||
return {...tsOptions, ...config.angularCompilerOptions, genDir: basePath, basePath};
|
||||
}
|
||||
|
||||
|
@ -194,9 +194,8 @@ export interface CompilerOptions extends ts.CompilerOptions {
|
||||
* Acceptable values are as follows:
|
||||
*
|
||||
* `false` - run ngc normally
|
||||
* `true` - run ngc with its usual global analysis, but compile decorators to Ivy fields instead
|
||||
* of running the View Engine compilers
|
||||
* `ngtsc` - run the ngtsc compiler instead of the normal ngc compiler
|
||||
* `true` - run the ngtsc compiler instead of the normal ngc compiler
|
||||
* `ngtsc` - alias for `true`
|
||||
* `tsc` - behave like plain tsc as much as possible (used for testing JIT code)
|
||||
*
|
||||
* @publicApi
|
||||
|
@ -263,11 +263,10 @@ class AngularCompilerProgram implements Program {
|
||||
emitCallback?: TsEmitCallback,
|
||||
mergeEmitResultsCallback?: TsMergeEmitResultsCallback,
|
||||
} = {}): ts.EmitResult {
|
||||
if (this.options.enableIvy === 'ngtsc' || this.options.enableIvy === 'tsc') {
|
||||
if (this.options.enableIvy) {
|
||||
throw new Error('Cannot run legacy compiler in ngtsc mode');
|
||||
}
|
||||
return this.options.enableIvy === true ? this._emitRender3(parameters) :
|
||||
this._emitRender2(parameters);
|
||||
return this._emitRender2(parameters);
|
||||
}
|
||||
|
||||
private _emitRender3(
|
||||
@ -899,7 +898,7 @@ export function createProgram({rootNames, options, host, oldProgram}: {
|
||||
options: CompilerOptions,
|
||||
host: CompilerHost, oldProgram?: Program
|
||||
}): Program {
|
||||
if (options.enableIvy === 'ngtsc') {
|
||||
if (options.enableIvy === true) {
|
||||
return new NgtscProgram(rootNames, options, host, oldProgram);
|
||||
} else if (options.enableIvy === 'tsc') {
|
||||
return new TscPassThroughProgram(rootNames, options, host, oldProgram);
|
||||
|
Reference in New Issue
Block a user